2016-07-21 11 views
0

私のプロジェクトは、罰金を働いていたと私は別のヘッダファイルで何かを変更したとき、私は突然、このエラーました:iが宣言されていない識別子Visual Studioは宣言されていない識別子エラーになります

エラーC2065「マップ」を

#include <map> 

class Game{ 

    Game(); 

} 
:Game.hの#include <map>

一部ました

私Game.cppでエラーが発生します行:

_results.insert(map<std::string, int>::value_type(_players[i]->getUsername(), 0)); 

このコード行がうまく働きました!いくつかの時点まで

+9

標準ヘッダーの名前の前に常に 'std ::'を使います。 [それは人生を楽にする](http://stackoverflow.com/questions/1452721/why-is-using-namespace-std-in-c-considered-bad-practice) – NathanOliver

+2

貼り付けたコードは、コンパイル( '}'の後にセミコロンがありません)。完全な例を投稿してください。 – Sean

+0

map :: value_type btwの代わりにstd :: make_pair()を使うことをお勧めします。 –

答えて

0

私の推測では、ある時点で、あなたのどちらかが、あなたが持っているので、using namespace std;ディレクティブに頼っていたstd::mapに似た、またはそれ以上の可能性の高いインターフェースを提供するグローバル名前空間にmapという名前のクラスを、持っていたということです(あなたが使用していたヘッダーに他の人がいたかもしれませんが、それが気に入ったらそれを削除したのは間違いです)。その行を含むコードブロックにstdのusingディレクティブまたはstd::mapの使用宣言を入れるか、C++標準ライブラリmapクラスを使用するときはいつでもstd::mapを明示的に使用してください。後者は、コードをより鮮明にし、よりクリーンにするために推奨されます。

カスタムmapクラスを使用していた場合は、そのヘッダーがまだ#include dであることと、同じ名前空間の問題にならないことを確認してください。

+0

#include using namespace std; すべてのtstringsは、visual stupidity 2003、HALLLLLPの下で宣言されていません。 – Owl

関連する問題