2015-12-05 106 views
0
class B; 
class A 
{ 
public: 
    string name; 
    B* box; 
}; 

class B 
{ 
public: 
    string name; 
    A appple; 
}; 


int main() 
{ 
    A theobjectA; 
    theobjectA.name = "lalal"; 
    B* bbb = new B; 
    theobjectA.box = bbb; 
    bbb->name = "asasasdd"; 

    cout<<theobjectA.name<<*(theobjectA.box); 
} 

我想知道爲什麼我無法訪問類A中的框值?它不允許取消引用指針。此外,我無法理解我將如何能夠使用這個相互遞歸的類。訪問遞歸類的成員變量

回答

1

您正在訪問它。由於您嘗試將class B類型的對象發送到對象coutoperator <<,因此您的程序失敗。當然,一般operator <<不知道如何處理這樣的輸入。如果要打印對象的名稱成員,則應將其發送到operator <<而不是整個對象:theobjectA.box->name

編輯:感謝@AlgirdasPreidžius注意到輸入錯誤。

+0

我用過這個,但是它表示' - >'的基本操作數是非指針類型'A'cout < box.name; – Air

+0

@空氣如此嘗試:'theobjectA.box->名稱'。 –