情况如下:
class Base
{
object* mainObject;
}
class Derived :
public Base
{
class aTrain
{
void* something;
.
.
.
~aTrain()
{
mainObject->destroyingMethod(something);
}
};
}
输出:非静态成员引用必须与特定对象相关。
我能理解这个问题,但是如何在不将Derived类传递给aTrain构造函数的情况下解决这个问题呢?
答案 0 :(得分:2)
在aTrain
内定义Derived
会影响类型 aTrain
的范围和访问权限。
这并不意味着每个aTrain
都有关联的Derived
。可以有任意数量的aTrain
个实例,也可以分别包含任意数量的Derived
个实例。
因此,如果您希望每个aTrain
知道某个Derived
实例,则必须使用指针或引用成员来实现它。
答案 1 :(得分:1)
如果不将mainobject
的某种引用传递给aTrain
,则无法解决此问题。是否通过将Derived
对象的引用传递给aTrain
构造函数,或者通过mainobject
的引用通过aTrain
的成员函数传递aTrain
来执行此操作1}}或任何其他可能的组合取决于您。
问题在于内部类有 no 隐式方式来访问它所包含的类的非静态成员。