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;
};
请注意,实际需要循环依赖关系的情况很少且相距甚远,因此至少要检查一下设计