2011-10-20 168 views
0

首次嘗試在不使用Visual Studio的情況下編譯一些代碼。安裝mingw並設置環境路徑變量。然後試圖編譯這段代碼:mingw編譯器錯誤

#include <iostream> 
#include <vector> 

int main() { 
typedef std::vector<int> Container; 
typedef std::vector<int>size_type size; 
typedef std::vector<int>iterator iter; 

Container container; 

for (size i = 0; i != 1000000; ++i) { 
container.push_back(i); 
} 

for (iter i = container.begin(); i != container.end(); ++i) { 
std::cout << *i << " " << std::endl; 
} 

system("PAUSE"); 
return 0; 
} 

通過打開一個CMD殼,將單個源文件和打字的目錄:

g++ main.cpp 

,但我得到了很多的錯誤消息如下:

main.cpp: In function 'int main()': 
main.cpp:6:35: error: expected initializer before 'size' 
main.cpp:7:34: error: expected initializer before 'iter' 
main.cpp:11:6: error: 'size' was not declared in this scope 
main.cpp:11:11: error: expected ';' before 'i' 
main.cpp:11:18: error: 'i' was not declared in this scope 
main.cpp:15:6: error: 'iter' was not declared in this scope 
main.cpp:15:11: error: expected ';' before 'i' 
main.cpp:15:34: error: 'i' was not declared in this scope 
main.cpp:19:15: error: 'system' was not declared in this scope 

我在這裏錯過了很痛苦的東西嗎?謝謝。

回答

3
typedef std::vector<int>size_type size; 
typedef std::vector<int>iterator iter; 

把它變成:

typedef std::vector<int>::size_type size; 
typedef std::vector<int>::iterator iter; 
+0

啊,謝謝。但是我仍然得到:main.cpp:在函數'int main()'中: main.cpp:19:15:錯誤:'系統'未在此範圍內聲明 –

+0

「system()」是一個posix函數,並且你正在開發窗口。你必須找到另一種方法來暫停程序,比如等待任何使用'std :: cin'鍵的鍵。 – Griwes

+0

謝謝......現在編譯:)寫在記事本C++中,而通常我猜Visual Studio會指出::的問題。 –

0

typedef std::vector<int>::size_type應該typedef std::vector<int>::size_type size;

1

你缺少(在它和迭代器)矢量定義和SIZE_TYPE之間::操作。