2015-09-04 85 views
0

我在這裏遇到了一些麻煩,使用C++通過指針訪問成員變量。使用指向類的指針訪問成員變量

說我有以下類,它有一些輸出和唯一標籤。

class CSource 
{ 
    public: 
    int tag; 
    double output; 
} 

我要存儲的指針類和這樣

struct foo 
{ 
    CSource *source; 
    int sourceTag; 
} 

然後,在第二類中一個結構的標籤,有一個成員函數,它的指針CSource類作爲參數

class CDest 
{ 
    public: 
    void addSource(CSource *sourcePtr); 
} 

這成員函數存儲指針和標籤到一個結構

void CDest::addSource(CSource *sourcePtr) 
{ 
    foo temp; 
    foo.source = sourcePtr; 
    foo.tag-> sourcePtr.tag; 
} 

最後一行給我錯誤「錯誤:表達式必須有指針類型」。我只想要原始標記值而不是指針,因爲下一步是搜索列表以查看該源是否已添加,添加它,然後使用反函數來搜索列表並刪除結構如果它在那裏使用標籤。

+0

在C++中不可能有指向類的指針,但是可以有指向類實例的指針。 –

回答

1

您應使用變量名稱,而不是類名:

foo temp; 
temp.source = sourcePtr; 
temp.tag = sourcePtr->tag; 
+0

'foo'沒有名爲'tag'的成員,我沒有看到任何使用類型名稱作爲變量的嘗試。 –

+0

@CaptainObvlious,這是什麼'foo temp; foo.source = sourcePtr;'你覺得? –

0

試試這個 「foo.tag = sourcePtr->標籤」,而不是 「foo.tag-> sourcePtr.tag」。

之後您將不會收到編譯錯誤。順便說一下,如果你的動機是隻插入「CSource」對象,你可以使用std :: set而不是使用鏈表。