0

状況は次のとおりです。

class Base
{
 object* mainObject;
}

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

出力:非静的メンバー参照は、特定のオブジェクトに関連している必要があります。

問題は理解できますが、DerivedクラスをaTrainコンストラクターに渡さずにこれを解決するにはどうすればよいですか?

4

2 に答える 2

2

aTrain内部を定義すると、タイプDerivedのスコープとアクセスに影響します。 aTrain

aTrainすべてにが関連付けられているという意味ではありませんDerivedaTrainインスタンスはいくつでも、個別にインスタンスの数はいくつでもかまいませんDerived

したがって、aTrainあるインスタンスについてすべての人に知ってもらいたい場合Derivedは、ポインタまたは参照メンバーを使用してそれを実装する必要があります。

于 2013-03-15T23:55:44.583 に答える
1

何らかの参照をmainobjectin に渡さずにこれを解決することはできませんaTrainDerivedオブジェクトへの参照をaTrainコンストラクターに渡すか、のメンバー関数またはその他の可能な組み合わせmainobjectを介してへの参照を渡すかは、あなた次第です。aTrainaTrain

問題は、内部クラスが含まれているクラスの非静的メンバーにアクセスするための暗黙的な方法がないことです。

于 2013-03-15T23:49:39.943 に答える