变量z无法从其他函数访问变量x

时间:2019-10-08 21:19:07

标签: c++

看看我提供的代码,我试图使它成为z = x

但是它不起作用,因为x在另一个函数中。一直说x没有被声明。有什么办法可以解决这个问题?

class game{

    public:
        void Starter(){
                string z {"Test"};
                z = x;
        }

    private:
        void Questions(){
                string x;
                cout << "Welcome to this game, please answer with yes or no: \n \n";

2 个答案:

答案 0 :(得分:0)

您需要将x传递给z

void Starter(string x){
    string z {"Test"};
    z = x;
}

然后在其他功能中,您可以执行Starter(x);

答案 1 :(得分:0)

您不应从另一个方法访问一个方法的自动变量。造成这种情况的原因有很多:最明显的是,此变量始终是新变量,并且在退出函数后仍未激活。在您的情况下,这些方法不会相互调用,因此zx的生存期甚至不会重叠。

您可能需要的是一个持久变量,可以从两个函数中看到。您有多种选择:对象字段,全局变量,静态成员...

您的代码没有描述您的意图,但是我想您的正确选择是数据成员:

class game{

    public:
        void Starter(){
                string z {"Test"};
                z = x; // You can access x here because it is a data member `this->x`;
        }

    private:
        string x;

        void Questions(){
                cout << "Welcome to this game, please answer with yes or no: \n \n";
                // Do whatever you want with x
        }
};