gpt4 book ai didi

c++ - 如何解决这个未声明的标识符

转载 作者:太空宇宙 更新时间:2023-11-04 15:36:54 25 4
gpt4 key购买 nike

我的项目出现未声明的标识符错误(vs2013 上的 C2065),我设法在下面的示例代码中重现了该问题:

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()
{

}

主要.cpp:

#include "foo.h"

int main()
{
Foo foo;
foo.doStuff();
return 0;
}

在 Visual Studio Express 2013 上构建时,出现以下错误:

错误 C2065:“Foo”:未声明的标识符

错误 C2923:“std::map”:“Foo”不是参数“_Ty”的有效模板类型参数

error C3861: 'someFunction': 找不到标识符

这里有什么问题,如何解决?

最佳答案

你有一个循环定义问题。请注意,foo.h 包含 bar.h bar.h 包含 foo.h。这是行不通的,因为这意味着在另一个定义先完成之前,这两个定义都无法完成。真正解决此问题的唯一方法是更改​​结构,使其中一个 header 不 #include 另一个 header 。

关于c++ - 如何解决这个未声明的标识符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31093481/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com