В C ++ инициализировать член класса указателем this во время построения

Я хотел бы создать класс, который связан с другим классом в каких-то отношениях родитель-потомок. Для этого «дочернему» классу нужна ссылка на его родительский.

Например:

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 <> в недопустимом состоянии), есть ли способ достичь этого?

9
задан sunside 23 October 2010 в 21:28
поделиться