3 votes

foreach non reconnu en C++

Dans mon livre cs106b, nous utilisons l'expression "foreach" pour parcourir une liste de mots dans une carte. J'ai implémenté le code et me suis tapé la tête contre le mur face à de mystérieuses erreurs. Voici le code :

   void DisplayWordCounts(Map<int> & wordsCount) {
     foreach (string word in wordsCount) {
        cout << left << setw(15) << word << right << setw(5)
        << wordsCount[word] << endl;
     }
}

sur la ligne commençant par "foreach", j'obtiens les erreurs suivantes : lesson4-macbeth/life.cpp:58 : error : expected primary-expression before 'word' (erreur : expression primaire attendue avant 'mot') lesson4-macbeth/life.cpp:58 : error : 'foreach' n'a pas été déclaré dans ce champ d'application. lesson4-macbeth/life.cpp:58 : error : expected `;' before '{' token

Je suppose que foreach n'est pas reconnu. Dans ce cas, comment puis-je parcourir une liste d'éléments à partir de la classe Map ?

1voto

Scott Langham Points 17447

Foreach n'existe pas en C++.

Dans la dernière version du C++, qui vient tout juste d'être publiée dans certains des derniers compilateurs, vous pouvez utiliser le "Range-based for-loop" vous le trouverez sur cette page : http://en.wikipedia.org/wiki/C%2B%2B0x

Je doute cependant que votre compilateur le supporte. Donc, peut-être s'en tenir à une boucle for pour l'instant.

0voto

RageD Points 3219

Essayez d'itérer sur la taille de la carte.

for(int i=0;i<MAP.size();++i)
    // something with MAP.at(i);

Remplacez MAP par votre objet cartographique.

Bonne chance !

Regards,
Dennis M.

0voto

Clifford Points 29933

Le code de votre exemple ressemble à un mélange de syntaxe C# et C++. La construction foreach elle-même est une syntaxe C#, C++/CLI (supporté par VC++) a une construction for each tout comme C++0x (supporté par GCC 4.6), mais aucune ne suit cette syntaxe.

-1voto

helloyou Points 11

Qt est supporté foreach en utilisant comme ça :

QDir dir("Dir");
dir=QFileDialog::getExistingDirectory(0,"Select Folder: ");
QFileInfoList list = dir.entryInfoList(QDir::Dirs| QDir::Files | QDir::NoDotAndDotDot);

std::vector<std::string> names;
foreach(QFileInfo finfo, list){
    std::string str=dir.path().toStdString().c_str();
    str=str+"/";
    names.push_back(str+finfo.fileName().toStdString().c_str());
}

mais, lorsque vous utilisez #define QT_NO_KEYWORDS sur le fichier d'en-tête, foreach handicapés.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X