访问父类变量

时间:2016-06-14 19:35:26

标签: c++ pass-by-reference

我觉得这应该很容易,但我仍然无法正常工作。

我不知道这里的最佳做法是什么。我首先尝试通过引用存储传递给子类的变量,然后在子类中调用它。除此之外,当变量在父类内部发生变化时,孩子看不到变化。

孩子:

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值由父类中的系统调用更改。

3 个答案:

答案 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
}