在类(非主)中使用另一个文件中的类会给出未声明的错误
Using a class from another file in a class (not main) gives undeclared error
我有一个main.cpp文件和两个类,每个类都有一个.h文件和一个.cpp文件。 主.cpp包括每个类的 .h 文件,并毫无问题地使用分支。 我可以让一个类使用另一个类。
我尝试将一个类的 .h 文件包含在另一个类中,但已经声明了错误。
我尝试在另一个类中声明该类,但得到不完整的声明错误。
我花了一个多小时阅读其他堆栈溢出答案和其他站点,但我发现没有什么是相同的(其中大多数是主类和一个类的问题)。
主.cpp有:
//other includes
#include "class1.h"
#include "class2.h"
int main( int argc, char* args[] )
{
Class1 classOne;
//code that use classOne and works
Class2 classTwo;
//code that tries to use classTwo
}
类1.h
class Class1
{
//some things
}
class1.cpp 无关紧要,因为它中的所有内容在从 main 使用时都可以工作.cpp
类2.h
class Class2
{
Class1 classInside; //"does not name a type" error
public:
void DoSomething(Class1* getClass); //"has not been declared" error
void DoSomethingElse();
}
类2.cpp
#include "class2.h"
Class2::DoSomethingElse()
{
Class1 classOneInsideWorkAlready; //"has not been declared" error
}
尝试了许多方法在类 1 中使用 class2,但没有一种奏效。
在我的项目中,我尝试创建一个 class1 的实例,在 main 中使用它,然后创建一个 class2 的实例(直到这里一切正常)并在 class2 实例中调用方法来修改 class1 的实例(通过使用在 class1 中定义的公共方法)。
Class2 是程序的一部分,一旦用户想要使用另一个部分 (Class3),就会被丢弃,因此无需将其保留在内存中。 Class1 负责用户看到的内容,因此当用户从 Class2 更改为 Class3 时,我不希望它消失。
希望这是有道理的,感谢您的阅读。
要使这个特定示例正常工作,您需要将Class1
的定义包含在 class2.cpp 中。到目前为止,您只将其引入主.cpp。
#include "class1.h"
#include "class2.h"
Class2::DoSomethingElse()
{
Class1 classOneInsideWorkAlready; // compiles fine.
}
一般来说,由于Class2
直接包含Class1
的实例,因此需要使其定义可用于Class2
的定义。因此,在一开始就将"class1.h"包含在"class2.h"中似乎是正确的方法。
- 在气泡排序程序中未声明错误功能
- 我在范围内未声明的错误类有问题
- 我的代码中有错误,未声明的标识符
- 错误:在 C++ 'std'使用未声明的标识符
- 重载时未在 C++ 的作用域错误中声明
- 未声明的标识符错误,但变量定义正确 (?)
- 在此范围内未声明错误"Clreol"
- 错误:在 C++ 目标 c 混合'self'使用未声明的标识符
- "myClock"未在此范围错误中声明
- 构造中错误:未在此范围中声明"data"
- 错误: C2065: "QTcpSocket" : 未声明的标识符
- C++:outFile错误:outFile未声明
- Qt for wasm: 错误: 使用未声明的标识符 'QThreadPool'
- 由于值返回函数中的错误,程序无法编译.它说未声明的标识符
- 奇怪的未声明变量编译器错误
- 我收到未声明的标识符错误,但我已包含头文件?
- 尝试在Linux Mint 17.1 64位上"make" C++项目时从cstdlib和类似内容编译错误(未声明/不是类型)
- C++错误未声明的标识符,但殷智感知不显示错误
- 骰子游戏c++错误未声明的标识符/代码审查
- C++错误未声明的标识符