帮我看看哪里有错误并帮忙改一下 谢谢
来源:百度知道 编辑:UC知道 时间:2024/05/26 03:43:57
#include <iostream.h>
class Y
{
public:
Y(int i){_callsXval = i;}
static int callsXval(){return _callsXval;}
private:
static int _callsXval;
};
static int Y::_callsXval = 0;
void main()
{
Y A(0);
cout<<"_callsXval="<<Y::callsXval()<<endl;
Y B(20);
cout<<"_callsXval"<<B._callsXval<<endl;
}
#include <iostream>
using namespace std;
class Y {
public:
Y() {}
static int callsXval() {return _callsXval;}
static void callsXval(int value) {_callsXval = value;}
private:
static int _callsXval;
};
int Y::_callsXval = 0;
int
main(void) {
Y::callsXval(3);
cout << Y::callsXval() << endl;
Y::callsXval(5);
cout << Y::callsXval() << endl;
}
######################################################
首先声明我没有Windows,这段程序在gcc 3.4.6 下编译通过,使用编译选项-ansi -pedantic -W -Wall,如果你用VC的话,可能需要把#include <iostream>改成#include <iostream.h>,并且可能需要去掉using namespace std;
你的问题在于_callsXval是静态变量,被所有类实例共享,因此只能被静态函数调用,而类的构造函数无论如何不可能是静态成员函数。因此通过构造函数设置静态变量的值是不可能的,由于_callsXval是private,因此需要重载一下callsXval()函数来设置此变量即可。
另外多说一句,作为一个好的并且相对正确的编程风格,main()应该声明成返回int 而不是void
不能用B._callsXval
首先这是private