Pimpl, Brigde, наследование
От: AcidTheProgrammer Россия https://hts.tv/
Дата: 26.08.13 12:26
Оценка:
Что-то не могу решить красиво, на первый взгляд, простую задачку:
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) и переменную член. Может кто-нибудь подскажет идеи???
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.