【发布时间】:2020-12-26 05:47:57
【问题描述】:
我有一系列类需要像这样互相引用
class A
{
vector<B *> B_list;
vector<C *> C_list;
...
};
每个班级。我目前对所有 .cpp 文件使用一个头文件,如下所示:
class B; class C; class A {...}; class B {...}; class C{...};
我想知道是否有办法让每个类有一个标题。
为清楚起见进行编辑:我正在开始一个项目,需要三个非常大、详细且不同的类,每个类都经常相互交互。
我已经为像 class A { C *c_item; B *b_item; } A; 这样的每个类创建了最少的代码,其中包括其他类,并且每个标题都有一个空白的 .cpp 文件。编译它会导致未定义的类型错误,因为没有其他类就无法定义。
所以,我在每个类头中添加了前向声明,例如class C; class B;,这导致“C”没有命名类型错误,在我的原始代码中,当我搞砸时,我得到了一些类已经定义的错误前向声明。
我可以让一切正常工作的唯一方法是使用我上面所说的一个头文件。然后我尝试使用三个单独的标头,它们都包含一个带有前向声明 class A; class B; class C; 的标头,但这并没有解决任何问题。
编辑 2,发现问题:我正在写 class A {...} A;,现在我正在写 class A {...};,每个文件顶部都有前向声明,它正在工作,但我不确定为什么会有这种差异工作。
【问题讨论】:
-
当您尝试将类定义放在不同的标题中时遇到了哪些问题?
-
每个类有一个标题是否有意义取决于每个类中的详细信息。您发布的代码中没有任何内容表明每个类不应该有一个标题,因此您需要更详细地描述您面临的问题。