나는 이것이 쉬워야한다고 느낀다. 그러나 나는 여전히 제대로 작동 할 수 없다.상위 클래스 변수에 액세스
여기 모범 사례가 무엇인지 모르겠습니다. 먼저, 참조로 자식 클래스에 전달 된 변수를 저장하고 자식 클래스 내에서 호출하는 방법으로 시작했습니다. 부모 클래스 내에서 변수가 변경되면 자식은 변경 사항을 보지 못합니다.
아이 :
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의 실제 값이 루프를 종료 할 때까지 기다립니다. 말할 필요도없이 루프를 종료하지 않습니다.
참고로, EndLoop 값은 상위 클래스의 시스템 호출에 의해 변경됩니다.
개인 부분은 직접적인 종류에서만 접근 가능하다; 친척이 아닌. 자식이 액세스 할 수있는 기본 클래스의 * protected * 변수가 있습니다. 먼저 자녀가 당신의 부분에 간섭 받기를 원한다면 먼저 생각하십시오. –
또한 부모는 컴파일 시간에 자녀 수 또는 이름 (또는 부품)이 얼마나 될지 모르기 때문에 부모가 하위 파트를 망칠 수 없습니다. –
Child 클래스의 EndLoopRef 변수가 참조가 아닙니다. 당신이 그것을 참조한다면. 하위 클래스는 변수의 범위를 제어하지 않으므로주의해야 할 수 있습니다. 하위 클래스가이를 사용하여 제어 클래스가 범위를 벗어나면 문제가 발생할 수 있습니다. – Dan