【发布时间】:2010-08-18 06:24:06
【问题描述】:
class A;
class B {
public:
B(A& a) : a(a) {}
private:
A& a;
};
/* Method 1 */
/* warning C4355: 'this' : used in base member initializer list */
/*
class A {
public:
A() : b(*this) {}
private:
B b;
};
*/
/* Method 2 */
/* But I need to manually perform memory dellocation. */
class A {
public:
A() { b = new B(*this); }
~A() { delete b; }
private:
B* b;
};
int main() {
}
目前,当我尝试在 B 中初始化引用时,我使用的是方法 1。但是,方法 1 会标记我警告,这是可以理解的。
因此,我必须使用方法 2,即使用动态内存分配。
有没有更好的方法我可以使用,而不需要手动分配/释放内存(好的。我知道智能指针)?
我更喜欢方法 1,只是我对警告不满意。
【问题讨论】:
标签: c++