2013-03-15 153 views
0

这里的情况是:访问基类构件内派生

class Base 
{ 
object* mainObject; 
} 

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

输出:的非静态成员参考必须相对于特定对象。

我可以理解这个问题,但我怎么能解决这个问题,而不需要将Derived类传递给aTrain构造函数?

回答

1

如果不将mainobject中的某些参考文件传递给aTrain,则无法解决此问题。无论您是通过将Derived对象的引用传递给aTrain的构造函数,还是通过将mainobject的引用传递给aTrain,通过aTrain的成员函数或任何其他可能的组合都由您决定。

的事情是,有一个内部类访问,它是包含在类的非静态成员没有含蓄的方式。

2

定义aTrainDerived影响的范围和访问类型aTrain

这并不意味着每个aTrain都有一个关联的Derived。可以有任何数量的aTrain实例和单独的任何数量的Derived实例。

所以,如果你想每aTrain知道一些Derived实例,你将不得不实现,与一个指针或引用成员。