我想創建一個以某種父子關係關聯另一個類的類。爲此,「孩子」課程需要提及其父母。在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的構造函數的instanciation列表,因爲this
引用是不允許存在。除了增加另一種方法setParent(T*)
(我不喜歡太多,因爲這意味着我必須將TEvent<>
實例置於無效狀態),有沒有辦法實現這一點?
他說什麼。只要你傳遞'this'的對象在構造過程中「不知道」觸及它(因爲這個對象'this'沒有被完全構造),這樣做很好,即使一些編譯器(特別是VC)發出警告。 – sbi 2010-10-23 21:43:18
VC++是這裏的關鍵。它確實有效。好像我必須強行壓制那個「錯誤」。非常感謝! – sunside 2010-10-23 21:53:09
我希望VC++只在ctor內的「this」成員訪問時發出警告。順便說一句,谷歌:: LogMessage類在[谷歌博客](http://code.google.com/p/google-glog)存儲「this」自己在mem-initializer列表ctor出於調試目的。我必須重新編譯#pragma警告(4355:禁用)才能在VC2010中工作。 – 2013-02-26 19:10:29