gpt4 book ai didi

c++ - 错误 "does not name a type"和 "has not been declared"之间的区别

转载 作者:搜寻专家 更新时间:2023-10-31 02:20:25 25 4
gpt4 key购买 nike

在我正在处理的代码库自动从 Java 转换为 C++ 之后(是的,是的,我知道,这不是一个好主意,但长话短说,这是需要的),我发现在许多类(class)中我有以下两个错误,与我的 ClassNameXXX 类型相关:

‘ClassNameXXX’ does not name a type

‘ClassNameXXX’ has not been declared

我知道问题的原因是 ClassNameXXX.h header 和其他 header 之间的循环包含问题(我正在努力解决这个问题)但我想知道这两个错误消息之间的实际区别是什么(也许这会给我一些解决循环问题的线索)。

提前致谢!

最佳答案

‘ClassNameXXX’ has not been declared

顾名思义,当您尝试定义尚未声明的内容时,例如,如果您编写 void SomeClass::foo(){} 而未声明 SomeClass 首先(例如,您忘记了 #include someClass.h 在 someClass.cpp 中)。编译器知道您正在尝试定义 SomeClass 的成员,但找不到它,并给您错误。

‘ClassNameXXX’ does not name a type

这个在不同的情况下会上升,例如

class MyClassOne
{
MyClassTwo _member;//error
};

class MyClassTwo
{
};

在这里,编译器理解 MyClassTwo 应该是 _member类型,但是因为 MyClassTwo 还没有在那个地方定义,编译器不知道这样的类型存在,所以它告诉你 MyClassTwo 没有命名类型。

关于c++ - 错误 "does not name a type"和 "has not been declared"之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32758257/

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