2014-10-12 100 views
0

這裏有兩類使用指針訪問友元類的成員函數

class A{ 
    A(int val):Val(val){} 
    int getVal(){return Val;} 
    friend class B; 
    private: 
    int Val; 
    } 


class B{ 
    B(A* ptr):PTR(ptr){} 
    private: 
    A* PTR; 
    } 

在主函數中創建兩個類

A objA; 
B objB(&objA) 

正如你所看到的物體,objB現在包含一個指針到objA的地址。我面臨的問題是如何使用objB中的指針訪問objA中的成員函數。

+1

您在找'PTR-> Val' – 2014-10-12 02:57:19

+0

這不清楚你在問什麼。你能發佈你想要的示例代碼,以及你期望它們如何工作嗎? – 2014-10-12 03:33:04

回答

0

如果您正在尋找在B型,反之亦然的目標做出點類型的對象,你可以使用,而不是通過實例,通過構造函數參數爲這樣的二傳手:

class A{ 
     A(int val):Val(val){} 
     int getVal(){return Val;) 
     void setB(B* ptr) {BPtr= ptr;} 
     friend class B; 
     private: 
     int Val; 
     B* BPtr 
    } 


class B{ 
     B(A* ptr):PTR(ptr){} 
     private: 
     A* PTR; 
    } 

現在當你創建A和B的對象,你可以這樣做:

A objA; 
B objB(&objA); 
A.setB(&objB); 

編輯:

好吧,我起初誤解了你的問題。如果您只想訪問A類對象的成員,則只需執行objA->field(*objA).field

+0

可否請您轉載包含setter指針的代碼,因爲我認爲這更接近解決方案。 – Josh 2014-10-12 03:11:51

+0

這裏喲去,我只是不知道,如果你實際上也想要一個指向類型A的對象類型B的對象。 – dramzy 2014-10-12 03:20:18

+0

哪部分?你能更清楚你真正想做什麼嗎? – dramzy 2014-10-12 03:21:26