C ++在基类中使用派生类变量

时间:2017-12-05 13:28:39

标签: c++ derived-class base-class

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'的前瞻性声明。问题是我们无法移动班级职位。 需要你的帮助,请提供实例建议。 在此先感谢您的帮助

2 个答案:

答案 0 :(得分:1)

你问题的长短不一,围绕你的设计有点像意大利面。它遍布整个地方,不能简单地一次完成一门课程并理解应该做什么。

为了能够使用D类的任何函数或创建一个函数,编译器必须知道该类可用的函数以及它的大小。出于这个原因,为了能够编译它,最简单的方法是将类C的实现迁移到它自己的cpp文件中,然后在其顶部包含D头。如果这不是一个选择,那么我认为你应该尽快为自己节省一大堆心痛并重新设计。

答案 1 :(得分:0)

类定义取决于其子对象的类型。如果C的成员类型为D,则必须在D之前定义C。如果在D后定义C,则C不得依赖D

类型通常不依赖于函数,因此如果C的成员函数依赖于D,则解决方案很简单:

  • 定义C
  • 定义D
  • 定义依赖于C
  • D的成员函数