Что-то не могу решить красиво, на первый взгляд, простую задачку:
class A
{
public:
A(...); // Какие-то параметры
protected:
class Private;
typedef std::shared_ptr<Private> PrivatePtr;
A(PrivatePtr that);
PrivatePtr m_private; // Реализация
};
class B : public A
{
public:
B(...); // Какие-то параметры
protected:
class Private;
typedef std::shared_ptr<Private> PrivatePtr;
PrivatePtr m_private; // Реализация
};
class A::Private
{
public:
Private(...); // Какие-то параметры
};
class B::Private : public A::Private
{
public:
Private(...); // Какие-то параметры
};
Структура классов как у паттерна Bridge, только у меня не интерфейсы и реализация, а открытая и закрытая реализация. Поэтому чем-то смахивает на Pimpl еще, но иерархии классов две.
Не могу придумать как в конструкторе производного класса B проинициализировать сразу и родителя (класс A) и переменную член. Может кто-нибудь подскажет идеи???