C++程序问题,请帮我解答下,拜托了。

这代码只有一个错误,但是我找不出来。。只能更正main函数里的错误使它的输出结果为:
member=0
member=5
member=10

//更改后可以正确运行的代码
#include<iostream.h>

class MyClass
{
public:
MyClass(){member=0;};
MyClass(int i){member=i;}
void SetMember(int m){member=m;}
int GetMember() const {return member;}
void Print() const{cout<<"member="<<member<<endl;}

private:
int member;
};

void main()
{
MyClass obj1;
obj1.Print();
MyClass obj2(3);
obj1.SetMember(5);//member是私有变量,不能够obj1.member这样使用,可以通过公共成员函数来修改。
obj2.SetMember(10);
obj1.Print();
obj2.Print();
}追问

成员数据那不能修改,只能修改main函数里的代码

追答

把MyClass类声明里的member变量改成public类型的,也可以直接用MyClass类的对象如obj1,像obj1.member这样直接引用。

追问

都说了只能修改main函数里的代码。。。声明那不能动的,,能修改那我还用问么。。。而且你说的对象调用私有成员是不行的,只能通过公有访问私有。

追答

只能修改main函数里的代码的话就只能通过访问公共成员函数来修改了,就像我程序里写的那样。obj1.SetMember(5)。

追问

能否把答案写出来?要完整的。拜托了。

追答

我上面已经把程序贴出来了啊

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-03-23
member为MyClass的私有变量,你设置成为private之后,就无法再main里面修改它。
所以 obj1.member=5 这句话是错误的。如果要修改的话,要么把member改成public的,或者只能用obj1.SetMember(5)。另外MyClass.SetMember(10);也是错的,应该是obj2.SetMember(10);追问

能把mian函数里的修改后的代码写出来么?

追答

按照我上面改一改试试吧。

追问

试过了,不行

第2个回答  2014-03-23
MyClass(int i){member=i;}

改成MyClass(int i=0){member=i;}
相似回答