我让我的项目中未声明的标识符错误(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文件来解决问题。 –