从派生类内的类中的方法访问基类成员

时间:2013-03-15 23:43:58

标签: c++ visual-c++

情况如下:

class Base
{
 object* mainObject;
}

class Derived :
 public Base
{
 class aTrain
 {
   void* something;
   .
   .
   .
   ~aTrain()
   {
    mainObject->destroyingMethod(something);
   }
 };
}

输出:非静态成员引用必须与特定对象相关。

我能理解这个问题,但是如何在不将Derived类传递给aTrain构造函数的情况下解决这个问题呢?

2 个答案:

答案 0 :(得分:2)

aTrain内定义Derived会影响类型 aTrain的范围和访问权限。

这并不意味着每个aTrain都有关联的Derived。可以有任意数量的aTrain个实例,也可以分别包含任意数量的Derived个实例。

因此,如果您希望每个aTrain知道某个Derived实例,则必须使用指针或引用成员来实现它。

答案 1 :(得分:1)

如果不将mainobject的某种引用传递给aTrain,则无法解决此问题。是否通过将Derived对象的引用传递给aTrain构造函数,或者通过mainobject的引用通过aTrain的成员函数传递aTrain来执行此操作1}}或任何其他可能的组合取决于您。

问题在于内部类有 no 隐式方式来访问它所包含的类的非静态成员。