我想创建一个以某种父子关系关联另一个类的类。为此,“孩子”课程需要提及其父母。在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