我有三节课。每个类都有自己的标题。
我希望每个类都有两个额外的构造函数来从其余两种类型进行转换:
// A.h
A(const B& b){}
A(const C& c){}
// B.h
B(const A& a){}
B(const C& c){}
// C.h
C(const A& a){}
C(const B& b){}
但是,如果我在每个标头中包含其他两个标头,我最终将得到循环依赖。
实现这一点的最佳方法是什么?
我有三节课。每个类都有自己的标题。
我希望每个类都有两个额外的构造函数来从其余两种类型进行转换:
// A.h
A(const B& b){}
A(const C& c){}
// B.h
B(const A& a){}
B(const C& c){}
// C.h
C(const A& a){}
C(const B& b){}
但是,如果我在每个标头中包含其他两个标头,我最终将得到循环依赖。
实现这一点的最佳方法是什么?
您可以使用前向声明来避免循环引用:
啊
巴赫
Ch
但是,您将无法在文件中定义构造函数
.h
,因为编译器不知道前向声明的类型实际上是什么样子,只知道它们存在。您必须在文件中定义构造函数.cpp
,您可以在文件中定义#include
完整的类声明,例如:a.cpp
B.cpp
cpp