#include <iostream>
using namespace std;
class class1{
public:
class1();
int x;
int y;
static int func();
};
int class1::func(){
return x;
}
int main() {
class1 c1;
c1.x=5;
cout<<c1.func()<<endl;
}
当我尝试编译它时,我得到了一个错误。如何在静态函数中访问x?
终端错误:
In static member function ‘static int class1::func()’:
error: invalid use of member ‘class1::x’ in static member function
return x;
^
note: declared here
int x;
^
要访问静态成员函数内部的非静态数据成员,需要将该类的一个对象传递给静态函数。否则,访问数据成员没有任何意义,因为没有对象与静态成员函数关联。
这里有一个方法:
int class1::func(class1 const & c) {
return c.x;
}
然后你可以像这样调用函数:
class1::func(c1);