C++ 在类(非main)中使用另一个文件中的类会产生未声明的错误

C++ 在类(非main)中使用另一个文件中的类会产生未声明的错误,c++,C++,我有一个main.cpp文件和两个类,每个类有一个.h文件和一个.cpp文件。 Main.cpp包含每个类的“.h”文件,并毫无问题地使用这些类。 我可以让一个类使用另一个类 我尝试在另一个类中包含一个类的.h文件,但已声明错误 我已尝试在另一个类中声明该类,但得到不完整的声明错误 我花了一个多小时阅读了其他堆栈溢出答案和其他网站,但我发现没有一个是相同的东西(其中大多数是main和一个类的问题) main.cpp有: //other includes #include "class1.h" #

我有一个main.cpp文件和两个类,每个类有一个.h文件和一个.cpp文件。 Main.cpp包含每个类的“.h”文件,并毫无问题地使用这些类。 我可以让一个类使用另一个类

我尝试在另一个类中包含一个类的.h文件,但已声明错误

我已尝试在另一个类中声明该类,但得到不完整的声明错误

我花了一个多小时阅读了其他堆栈溢出答案和其他网站,但我发现没有一个是相同的东西(其中大多数是main和一个类的问题)

main.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
}
尝试了很多方法在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。