5

私は自分のコードを2つの異なるマシンでコンパイルしましたが、それらは同じセットアップであると思いました。ただし、1つは問題なくコンパイルされ、もう1つは次のエラーを出します。

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

関連するコード:

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

問題が何であるかについて何か考えはありますか?TIA。

4

2 に答える 2

13

std::for_each()代わりに試してください。おそらく、名前空間を見ることができません。

于 2009-08-06T15:32:43.047 に答える
12

考えられる問題は、最初のコンパイラがusing namespace std;その名前空間(などfor_each)からの装飾されていない識別子の使用を許可する前に必要であるのに対し、2番目のコンパイラは許容範囲を超えてそれを要求しないことです。

もちろん、他の回答やコメントが熱く指摘しているように、std::for_each発生するたびに明示的にスペルする、またはより広いusingディレクティブ( )の代わりにusing宣言( )を使用するなど、おそらく好ましい代替手段がありますが、これは(良い)アドバイスは、あるコンパイラがエラーを診断し、別のコンパイラは診断しなかった理由についての質問に対する回答ではありません;-)。using std::for_each;using namespace std;

于 2009-08-06T15:31:53.873 に答える