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

Access base class member from a method in a class inside derived class

本文关键字:访问 基类 成员 方法 内部 派生      更新时间:2023-10-16

情况如下:

class Base
{
 object* mainObject;
}
class Derived :
 public Base
{
 class aTrain
 {
   void* something;
   .
   .
   .
   ~aTrain()
   {
    mainObject->destroyingMethod(something);
   }
 };
}
非静态成员引用必须相对于特定对象。

我可以理解这个问题,但我怎么能解决这个问题,而不传递派生类到一个构造函数?

Derived中定义aTrain会影响类型 aTrain的作用域和访问权限。

这并不意味着每个aTrain都有一个相关的Derived。可以有任意数量的aTrain实例,也可以有任意数量的Derived实例。

所以如果你想让每个aTrain知道一些Derived的实例,你必须实现它,用指针或引用成员

如果不将某种对mainobject的引用传递给aTrain,则无法解决此问题。您是通过将对Derived对象的引用传递给aTrain构造函数,还是通过aTrain的成员函数或任何其他可能的组合将对mainobject的引用传递给aTrain来实现这一点,这取决于您。

问题是内部类没有隐式的方式来访问包含它的类的非静态成员。