C++ 在类(非main)中使用另一个文件中的类会产生未声明的错误
我有一个main.cpp文件和两个类,每个类有一个.h文件和一个.cpp文件。 Main.cpp包含每个类的“.h”文件,并毫无问题地使用这些类。 我可以让一个类使用另一个类 我尝试在另一个类中包含一个类的.h文件,但已声明错误 我已尝试在另一个类中声明该类,但得到不完整的声明错误 我花了一个多小时阅读了其他堆栈溢出答案和其他网站,但我发现没有一个是相同的东西(其中大多数是main和一个类的问题) main.cpp有:C++ 在类(非main)中使用另一个文件中的类会产生未声明的错误,c++,C++,我有一个main.cpp文件和两个类,每个类有一个.h文件和一个.cpp文件。 Main.cpp包含每个类的“.h”文件,并毫无问题地使用这些类。 我可以让一个类使用另一个类 我尝试在另一个类中包含一个类的.h文件,但已声明错误 我已尝试在另一个类中声明该类,但得到不完整的声明错误 我花了一个多小时阅读了其他堆栈溢出答案和其他网站,但我发现没有一个是相同的东西(其中大多数是main和一个类的问题) main.cpp有: //other includes #include "class1.h" #
//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
}
尝试了很多方法在class2中使用class1,但都没有成功
在我的项目中,我试图创建一个class1实例,在main中使用它,然后创建一个class2实例(直到这里一切正常),并调用class2实例中的方法来修改class1实例(通过使用class1中定义的公共方法)
Class2是程序的一部分,一旦用户想要使用另一部分(Class3),它就会被扔掉,因此不需要将它保存在内存中。
Class1关注用户看到的内容,所以我不希望当用户从Class2更改为Class3时它消失
希望这有一定的意义,感谢阅读。要使这个特定的示例起作用,您需要在class2.cpp中包含
Class1
的定义。到目前为止,您只将其引入main.cpp
#include "class1.h"
#include "class2.h"
Class2::DoSomethingElse()
{
Class1 classOneInsideWorkAlready; // compiles fine.
}
一般来说,由于
Class2
直接包含Class1
的实例,因此需要将其定义提供给Class2
的定义。因此,在开始时将“class1.h”包含在“class2.h”中似乎是正确的方法。谢谢你的回答。将#include“class1.h”添加到class2.cpp中会使class2.ccp中的错误消失。将#include“class1.h”添加到class2.h中会出现“重新定义”错误。@但是,发生“重新定义”错误是因为您的标题中没有包含保护。在开头的每个变量中添加“#pragma once”-第二个变量应该构建良好。这个错误是因为您在main中包含了两次头,一次是单独的,另一次是通过class2.h。