In C++, initialize a class member with 'this' pointer during construction
c++, class, initialization, this
Solution
It is OK to use `this` in the initialization list, as long as it is not used to access any members that may not have been initialized yet.
Problem
I'd like to create a class that is associated to another class in some sort of parent-child relationship. For this the "child" class needs a reference to it's parent. For example: ``` template <typename T> class TEvent { private: T* Owner; public: TEvent(T* parent) : Owner(parent) {} }; class Foo { private: TEvent<Foo> Froozle; // see below }; ``` Now the problem is that I can't initialize the `Froozle` instance directly, nor using the instanciation list of Foo's constructor, because `this` references are not allowed there. Apart from adding another method `setParent(T*)` (which I don't like too much because it means that I have to leave the `TEvent<>` instance in an invalid state), is there a way to achieve this?