我觉得这应该很容易,但我仍然无法正常工作。
我不知道这里的最佳做法是什么。我首先尝试通过引用存储传递给子类的变量,然后在子类中调用它。除此之外,当变量在父类内部发生变化时,孩子看不到变化。
孩子:
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值由父类中的系统调用更改。
答案 0 :(得分:3)
命名您的班级成员bool EndLoopRef;
并不会将其作为参考。这仍然只是bool
值,构造函数的成员初始化将在构造时加载EndLoop
的值。
您已经向您展示了如何使用&
来定义参考。
答案 1 :(得分:1)
您尚未将其定义为参考。 你必须说:
bool &EndLoopRef;
答案 2 :(得分:-3)
私有变量不应该通过引用传递。与私有交互的最佳方法是在具有成员变量的类中使用get()和set()方法。在这种情况下,您的父值可以提供一个getEndLoop()函数,该函数将返回布尔值。
Child::PrimaryFunction()
{
while (!Parent.getEndLoop())
{
// Main app function is in here
}
// EndLoop is true, we can now leave this method
}