Я хотел бы создать класс, который связан с другим классом в каких-то отношениях родитель-потомок. Для этого «дочернему» классу нужна ссылка на его родительский.
Например:
template <typename T>
class TEvent {
private: T* Owner;
public: TEvent(T* parent) : Owner(parent) {}
};
class Foo {
private: TEvent<Foo> Froozle; // see below
};
Теперь проблема в том, что я не могу ни инициализировать экземпляр Froozle
напрямую, ни использовать список экземпляров Конструктор Foo, потому что ссылки this
здесь не разрешены. Помимо добавления другого метода setParent (T *)
(который мне не очень нравится, потому что это означает, что я должен оставить экземпляр TEvent <>
в недопустимом состоянии), есть ли способ достичь этого?