我想這樣做,但我有說Y class has no constructors
循環引用:類沒有構造函數和空成員的shared_ptr值
class Y;
class X
{
std::shared_ptr<Y> base;
//other private stuff
public:
X()
{
base = std::shared_ptr<Y>(new Y(this));
}
std::shared_ptr<Y> Get(){ return base; }
};
class Y
{
X d;
//other private stuff
public:
Y(X * b) :d(*b){}
};
使用它作爲
X x; // all values in X is defined
std::shared_ptr<Y> spy=x.Get();
spy
包含一個錯誤X中的所有私有值,除了它本身的shared_ptr,它是空的。這是正常的嗎?
更多說明: spy
包含d
即X
's。如果我在調試器中查看spy
裏面的d
,我看到base
是空的。我只是錯了嗎?
在X的聲明下移動X的實現。 – Borgleader
定義'Y'後,在類的外面定義'X :: X'。 –
如何在調試器中看到'spy'包含的值? –