C++ 班级之间互相利用?

C++ 班级之间互相利用?,c++,visual-studio-2010,C++,Visual Studio 2010,我有两个包含两个类的头文件。每个类相互依赖,如下所示: // class1.h #include "class2.h" class ClassOne { ClassTwo* c2; }; 我希望代码不会编译,所以我在其中一个头中添加了一个转发声明: // class1.h #include "class2.h" class ClassTwo; class ClassOne { ClassTwo* c2; }; 但遗憾的是,这也不起作用。“使用未定义类型'class

我有两个包含两个类的头文件。每个类相互依赖,如下所示:

// class1.h

#include "class2.h"

class ClassOne {
    ClassTwo* c2;
};

我希望代码不会编译,所以我在其中一个头中添加了一个转发声明:

// class1.h

#include "class2.h"

class ClassTwo;

class ClassOne {
    ClassTwo* c2;
};
但遗憾的是,这也不起作用。“使用未定义类型'class2'”时,我不断收到编译器错误

我知道我可以将它们合并到一个头文件中,它们会工作,但实际上它们都是非常大的类,我真的希望它们有自己的头文件用于组织目的

有没有办法绕过这个问题

谢谢,
Alex

您添加了转发声明,但没有删除
包含
。这样做,你就是黄金

实际上,删除这两个包含,并用转发声明替换它们

// class1.h

class ClassTwo;

class ClassOne {
    ClassTwo* c2;
};


// class2.h

class ClassOne;

class ClassTwo {
    ClassOne* c1;
};

请注意,实际需要循环依赖关系的情况很少且相距甚远,因此至少要检查一下设计。

您添加了转发声明,但没有删除
include
。这样做,你就是黄金

实际上,删除这两个包含,并用转发声明替换它们

// class1.h

class ClassTwo;

class ClassOne {
    ClassTwo* c2;
};


// class2.h

class ClassOne;

class ClassTwo {
    ClassOne* c1;
};
请注意,实际需要循环依赖关系的情况很少且相距甚远,因此至少要检查一下设计