提问者:小点点

如何在静态函数中访问类成员?[副本]


#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;
                 ^

共1个答案

匿名用户

要访问静态成员函数内部的非静态数据成员,需要将该类的一个对象传递给静态函数。否则,访问数据成员没有任何意义,因为没有对象与静态成员函数关联。

这里有一个方法:

int class1::func(class1 const & c) {
    return c.x;
}

然后你可以像这样调用函数:

class1::func(c1);