The below is my code design
class D;
class A {
D *d;
class B:public C {
somefunctions();
}
}
class C {
//I need to use class D variables inside Class C
}
无论我在C类中为D类变量做什么, 它投掷无效使用不完整的' D类'和D'的前瞻性声明。问题是我们无法移动班级职位。 需要你的帮助,请提供实例建议。 在此先感谢您的帮助
答案 0 :(得分:1)
你问题的长短不一,围绕你的设计有点像意大利面。它遍布整个地方,不能简单地一次完成一门课程并理解应该做什么。
为了能够使用D类的任何函数或创建一个函数,编译器必须知道该类可用的函数以及它的大小。出于这个原因,为了能够编译它,最简单的方法是将类C的实现迁移到它自己的cpp文件中,然后在其顶部包含D头。如果这不是一个选择,那么我认为你应该尽快为自己节省一大堆心痛并重新设计。
答案 1 :(得分:0)
类定义取决于其子对象的类型。如果C
的成员类型为D
,则必须在D
之前定义C
。如果在D
后定义C
,则C
不得依赖D
。
类型通常不依赖于函数,因此如果C
的成员函数依赖于D
,则解决方案很简单:
C
D
C
D
的成员函数