2014-11-16 56 views
0

這裏是我的結構聲明:創建結構的載體,預留空間,C++

struct HeapEntry { 
    HeapEntry(int a, int b){ 
     id = a; 
     key = b; 
    } 
    int id; 
    int key; 
}; 

我想打一個向量來存儲HeapEntry對象,併爲它預留的內存,因爲我知道有多少對象我需要存儲。

std::vector<HeapEntry> adjList(); 
adjList.reserve(200); 

adjList.reserve(200)線產生錯誤「表達必須具有類類型」雖然。這是怎麼回事?

謝謝

+0

重複,在這裏看到(http://stackoverflow.com/questions/4175971/error-c2228-left-of -size-must-have-class-struct-union) – user1

+0

你發現了一個非常有趣的C++特性,這是最令人頭痛的解析。 –

+0

這不是最令人煩惱的解析的例子。 – Barry

回答

2

使用:

std::vector<HeapEntry> adjList; 

,而不是這樣的:

std::vector<HeapEntry> adjList(); 
1

您的意思是宣佈它是這樣嗎?

std::vector<HeapEntry> adjList; 
+0

我想我做了,有什麼區別? – Adam

+0

我相信在C++中尾隨的括號是非法的。如果您需要將參數傳遞給構造函數,則只能使用parens。 – Kevin

+2

@Kevin:他們是合法的,但這是一個函數聲明。 –