2016-07-21 2 views
0

내 프로젝트는 잘 작동하고 있었고, 난 다른 헤더 파일에 뭔가를 변경할 때 다음 나는 갑자기 오류가있어 : 내가 비록 선언되지 않은 식별자비주얼 스튜디오 선언되지 않은 식별자 오류를 제공

:

오류 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은 시각 어리 석음 2003, HALLLLLP 하에서 선언되지 않습니다. – Owl