2011-03-19 88 views
0

我試圖創建一個字符串列表,下面的示例here。下面這給了我的語法錯誤:編譯器列表錯誤<string>

private: list<string> images; 

的錯誤(都在其中,上面的聲明是線):

syntax error : missing ';' before '<' 
missing type specifier - int assumed. Note: C++ does not support default-int 
unexpected token(s) preceding ';' 

這是一類只除了一個單一構造函數,它編譯罰款沒有它。我究竟做錯了什麼?

+0

你可能不希望一個'list',而是一個'VECTOR'。 – GManNickG 2011-03-19 20:57:59

+0

發佈代碼可能有助於追蹤錯誤。 – Mahesh 2011-03-19 20:58:23

回答

4

您是否#include均爲<list><string>?此外,你有沒有寫任何

using namespace std; 

using std::list; using std::string; 

你得到的錯誤是不被訪問的名稱一致導入從namespace std名稱liststring,所以這是我最好的猜測。

編輯:因爲這是在一個頭文件中,所以你不應該使用上述任何一個構造(感謝wilhelmtell指出這是一個頭文件!)。相反,你應該完全限定名稱作爲

private: std::list<std::string> images; 

這樣編譯器確切地知道在哪裏找liststring

+2

不要將名稱空間'std'放入標題中! – wilhelmtell 2011-03-19 21:04:56

+0

@ wilhelmtell- D'oh!沒有意識到這是一個標題。正確答覆更新。 – templatetypedef 2011-03-19 21:07:55

+0

@wilhelmtell那麼爲什麼不應該把一個名稱空間帶入頭部? – quasiverse 2011-03-19 22:23:57

0

您需要限制liststring類型及其namespace

任一類型std::list<std::string>或在#include <string>#include <list>指令後加using namespace std;

簡單的工作程序:

#include <list> 
#include <string> 
using namespace std; 
int main (int, char **) 
{ 
    list<string> strings; 
    strings.push_back("1st string"); 
} 
+0

我使用了限定名稱,這是我現在得到的錯誤:'不能定義'圖像'作爲託管'MyClass :: MyForm'的成員:混合類型不被支持' – 2011-03-19 21:06:41

+0

@Igor:託管C++是不一樣的C++,你應該相應地標記你的問題。 – GManNickG 2011-03-19 21:12:48