2014-02-26 59 views
0

嗨,我面臨這個問題,我研究,應該沒有問題與我的代碼。所以我不知道爲什麼發生這種情況,基本上我有這樣的:錯誤:表達式必須有一個指向類C++的指針

typedef struct { 

Edge *next; 
Edge *twin; 

} Edge; 

然後,我有,當我嘗試訪問此邊緣我面對的成員存儲這個結構

std::vector<Edge*> EdgeList; 

但是矢量上面的錯誤。

Edge *e1 
e1->next = EdgeList[index]->next->twin; 

我能夠訪問只能達到一度,因爲如果我以這種方式編寫我的代碼;

Edge *e1, *e2; 
e2 = EdgeList[index]->next; 
e1->next = e2->twin; 

錯誤消失。注意我確保所有的指針都不是NULL。我想問問爲什麼這樣呢?如果我想獲得幾個學位,那麼我不能爲每個學位一次申報一個變量。有人可以幫忙嗎?

+1

你有沒有讀過'new'? –

+0

您正試圖使用​​未初始化的指針。 e1應該被聲明爲邊e1;例如,使用e1.next訪問。 – Steger

回答

2

你的問題是你創建了一個名爲Edge的匿名結構和一個變量(匿名),而不是創建一個名爲Edge的類型。

更改結構聲明:

struct Edge 
{ 
    Edge *next; 
    Edge *twin; 
}; 

P.S:您不需要在C使用的typedef ++。 P.P.S:我不知道你的用例是什麼,但你應該直接將結構存儲到向量中,而不是指向它們的指針。

相關問題