5 Stimmen

for_each() in C++

Ich habe meinen Code auf zwei verschiedenen Rechnern kompiliert, von denen ich dachte, dass sie identisch eingerichtet sind. Allerdings kompiliert eine ohne Probleme, und die andere gibt den folgenden Fehler.

LogEventReader.cpp(320) : error C3861: 'for_each': identifier not found, even with argument-dependent lookup

Der entsprechende Code:

#include <algorithm> 
...
for_each(messages.begin(), messages.end(), processXMLMessage);

Haben Sie eine Idee, was das Problem sein könnte? TIA.

13voto

Sorantis Punkte 14060

Versuchen Sie std::for_each() stattdessen. Vielleicht kann es den Namespace nicht sehen.

12voto

Alex Martelli Punkte 805329

Ein wahrscheinliches Problem ist, dass der erste Compiler eine using namespace std; bevor sie die Verwendung von nicht dekorierten Bezeichnern aus diesem Namensraum (wie for_each ), während der zweite übermäßig großzügig ist und dies nicht verlangt.

Natürlich gibt es, wie in anderen Antworten und Kommentaren hervorgehoben wurde, wahrscheinlich bessere Alternativen, wie z. B. die ausdrückliche Schreibweise std::for_each bei jedem Auftreten oder unter Verwendung eines mit 宣言 ( using std::for_each; ) anstelle des umfassenderen mit ディレクティブ ( using namespace std; ) -- aber dieser (gute) Ratschlag ist keine Antwort auf Ihre Frage, warum ein Compiler einen Fehler diagnostiziert und ein anderer nicht;-).

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X