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個意志標誌我警告其是可以理解的。初始化參考 - 警告C4355:「這個」:在基地成員初始化列表中使用
因此,我必須回退使用方法2,通過使用動態內存分配。
有沒有更好的方法可以使用,而不需要手動內存分配/解除分配(OK。我知道智能指針)?
我更喜歡方法1,只是說我對這個警告並不滿意。