为什么在类的静态函数中,不能使用改类的成员变量?
为什么在类的静态函数中,不能使用改类的成员变量?
我在一个类中定义了一个静态成员函数A,然后在这个类的其它函数B中用afxbeginthread来调用这个函数,为什么A中不能直接使用类的成员变量,后来我在B中把this传给A,才编译通过,这是为啥?求指导~
afxbeginthread中调用的函数必须定义为static吗?
[解决办法]
为什么A中不能直接使用类的成员变量,
静态成员是大家共有的 没有静态是某个人所思有的 你要使用 总得说用谁的把!
[解决办法]
static member function缺少编译器在name mangling阶段安插的this指针,任何的member function都会被安插this指针,以访问此pointer所指向对象的member。因此static member function无法访问member,它该访问哪个对象的member呢?
[解决办法]
static函数是类所有的,他不像其他的non-static函数那样有this指针,static函数是没有this指针的,具有独立的函数入口地址。可以用ClassName::staticFuntion();来调用静态函数,当然普通的类对象也可有使用静态函数,毕竟他是类共有的嘛。因为静态函数没有this指针所以它去操作non-static类成员变量的时候不知道去操作哪一个对象的,所以它不允许操作类的non-ststic变量,但是静态函数可以访问类的静态变量。