0

情况如下:

class Base
{
 object* mainObject;
}

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

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

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

4

2 回答 2

2

定义aTraininsideDerived会影响类型 aTrain的范围和访问。

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

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

于 2013-03-15T23:55:44.583 回答
1

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

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

于 2013-03-15T23:49:39.943 回答