2011-10-20 4 views
0

Première tentative de compilation de code sans utiliser Visual Studio. Mingw installé et définir la variable de chemin d'environnement. Puis essayé de compiler ce code:erreurs de compilation 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; 
} 

En ouvrant un shell cmd, allez dans le répertoire du fichier source et en tapant:

g++ main.cpp 

Mais je reçois beaucoup de messages d'erreur comme suit:

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 

Est-ce que je manque quelque chose de douloureusement évident ici? Merci.

Répondre

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

tour dans:

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

Ah, merci. Cependant j'obtiens toujours: main.cpp: Dans la fonction 'int main()': main.cpp: 19: 15: erreur: 'system' n'a pas été déclaré dans cette portée –

+0

Eh bien, 'system()' est une fonction posix et vous développez sur Windows. Vous devez trouver un autre moyen de mettre le programme en pause, comme attendre que l'on appuie sur une touche en utilisant 'std :: cin'. – Griwes

+0

Merci ... compile maintenant :) A écrit dans le bloc-notes C++ alors que normalement je suppose que Visual Studio aurait signalé le problème avec ::. –

0

typedef std::vector<int>::size_type doit être typedef std::vector<int>::size_type size; etc.

1

Il vous manque :: operator entre la définition du vecteur et size_type (et iterator après).