如:
class player{
int num;
string name;
int res;
public:
player(string a="",int b=0){
name=a;
res=b;
num++;
}
string getname(){
return name;
}
};
void a(){
player data("123",100);
}
void b(){
a();
data.getname();
}
这样会提示b函数中的data没定义,怎么样将a函数中定义的data保留下来
你这个data是play类型的一个实例,
你可以把它看作一个play类型的变量,
变量是有作用域的,你在a函数定义的data,作用域在a中,a结束,实例data就释放了。
你想在b,也就是其他函数中使用a中定义的实例,有两种方法
1. 全局变量
player data; //定义成全局变量,换个说法全局实例
void a(){
data.name = "123"; //初始化他的成员,顺便一说你的num需要自己添加初始化
data.res = 100;
}
void b(){
data.getname();
}
2. 参数传递
player* a(){ //返回一个类实例的指针
player data("123",100);
return data;
}
void b(){
player* pData;
pData = a();
pDdata->getname();
}