看看我提供的代码,我试图使它成为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";
答案 0 :(得分:0)
您需要将x
传递给z
。
void Starter(string x){
string z {"Test"};
z = x;
}
然后在其他功能中,您可以执行Starter(x);
答案 1 :(得分:0)
您不应从另一个方法访问一个方法的自动变量。造成这种情况的原因有很多:最明显的是,此变量始终是新变量,并且在退出函数后仍未激活。在您的情况下,这些方法不会相互调用,因此z
和x
的生存期甚至不会重叠。
您可能需要的是一个持久变量,可以从两个函数中看到。您有多种选择:对象字段,全局变量,静态成员...
您的代码没有描述您的意图,但是我想您的正确选择是数据成员:
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
}
};