私はこれが簡単なはずだと思いますが、私はまだ正しく動作することはできません。親クラスの変数へのアクセス
ここでは何がベストプラクティスであるかわかりません。最初に、子クラスに渡された変数を参照として格納し、それを子クラス内で呼び出しようとすることから始めました。ただし、変数が親クラス内で変更された場合、子は変更を認識しません。
子:
class Child
{
public:
Child(bool &EndLoop);
~Child();
private:
bool EndLoopRef;
};
Child::Child (bool &EndLoop) : EndLoopRef(EndLoop)
{
}
Child::PrimaryFunction()
{
while (!Child::EndLoopRef)
{
// Main app function is in here
}
// EndLoop is true, we can now leave this method
}
親:これを要約すると
class Parent
{
public:
Parent();
~Parent();
private:
bool EndLoop;
};
Parent::Parent()
{
Child childclass(EndLoop);
childclass.PrimaryFunction();
// EndLoop was changed and the loop is now overe
}
、親クラスを参照することによりEndLoop
を渡します。子クラスはこの参照を格納し、EndLoopRefの真の値がループを終了するのを待ちます。言うまでもなく、それはループを終了していません。
FYIのEndLoop値は、親クラスのシステムコールによって変更されます。
プライベートパーツは直接クラスでのみアクセスできます。親戚ではない。子がアクセスできる基本クラスに* protected *変数があります。最初に、あなたが本当にあなたの部分に干渉して子供を欲しい場合は、まず考えてみてください。 –
また、親はコンパイル時に何人の子供も名前(または部分)が存在しないか分からないので、親は子の部分を混乱させることはできません。 –
ChildクラスのEndLoopRef変数は参照ではありません。あなたがそれを参考にした場合。子クラスは変数のスコープを制御しないので注意が必要な場合があります。子クラスが使用される前に、制御クラスが有効範囲外になると問題が発生する可能性があります。 – Dan