C++的类和数据问题,求解
我使用了一个简单的类来储存变量,代码如下
class Data
{
public:
Data(): data(0){}
Data(int x): data(x) {}// 重载构造函数
~Data() {}
void s(int newdata) { data = newdata; }// g为setdata的缩写,使用时较为方便
int g() const { return data; }// g为getdata的缩写,使用时较为方便
void add(int x) {data += x;}
void sub(int x) {data -= x;}
void mul(int x) {data *= x;}
void div(int x) {data /= x;}
private:
int data;
};
然后我在main函数里面创建了多个对象来储存一些数据
...
Data maxexp ;// 记录主角的最大经验值
Data hhp;// 记录主角的HP
Data hmp;// 记录主角的MP
Data zhp;// 记录怪物的HP
Data hg;// 记录主角的攻击力
Data hf;// 记录主角的防御力
Data zg;// 记录怪物的攻击力
Data zf;// 记录怪物的防御力
Data maxhhp;// 记录主角的最大HP
Data maxhmp;// 记录主角的最大MP
Data maxzhp;// 记录怪物的最大HP
Data zname;// 记录怪物的编号
...
接着我继续在main函数里实例化了几个对象,这个对象用于接收数据并输出一些结果
...
while(true)
{
std::cin >> Temp_input;// 读取用户输入
User_input.s(Temp_input);
Data_compute* compute = new Data_compute(User_input.g(), location.g());// 对数据进行计算
delete compute;
Data_face* face = new Data_face(User_input.g(), location.g());// 输出界面
delete face;
}
...
现在问题就出来了,我在一个名为Data_face类里面有一个输出文字的函数,但这个函数需要获取一些存在Data类里面的数据,例如输出我有多少金币什么的,但是在这个函数里不能这样写代码:
std::cout << "您有";
std::cout << Money.g();
std::cout << “个金币”;?
所以求高手告诉我怎么办
[解决办法]
建議多看點別人的代碼,然後模仿,一步一步打好基礎之後,自己再有想法的時候,就能應用自如了。
[解决办法]
我感觉可以给Data类加一个成员变量叫name,并且添加一个
friend ostream &operator <<(ostream &os, const Data &d)
{
os << d.name << "\t" << d.data << endl;
return os;
}
直接调用 cout << d;就可以了
[解决办法]
重载构造函数要用const&做参数