我讓我的項目中未聲明的標識符錯誤(C2065上vs2013),我成功地複製在下面的示例代碼中的問題:如何解決這個未聲明的標識符
了foo.h:
#pragma once
#include "bar.h"
class Foo
{
public:
inline void doStuff() { someFunction(); }
};
bar.h:
#pragma once
#include <map>
#include "foo.h"
extern std::map<const char*, Foo> myMap;
void someFunction();
bar.cpp:
#include "bar.h"
std::map<const char*, Foo> myMap;
void someFunction()
{
}
main.cpp中:
#include "foo.h"
int main()
{
Foo foo;
foo.doStuff();
return 0;
}
當Visual Studio速成2013建築,它給了這些錯誤:
錯誤C2065: '富':未聲明的標識符
錯誤C2923:「的std ::地圖」:‘富’不是參數的有效模板類型參數‘_Ty’
錯誤C3861:‘someFunction’:標識符找不到
這裏有什麼問題,它如何解決?
並轉發引用您從中移除include的類中的類。 – Robinson
感謝您的建議,通過將#include從頭文件移動到cpp文件來解決問題。 –