为何不能使用?有人说是因为,静态里没有this参数。
但是,成员函数里没有成员变量的参数,却能直接使用成员变量,这是为何?
比如 cl ass a
{
public:
int a;
f()
{
a = 1 ; // 成员函数里没有a对应的参数,却能直接使用a
}
}
成员函数里没有a对应的参数,却能直接使用a
那为何静态成员函数里,不能直接使用成员变量this ?
就是说,静态成员函数里,不能对非静态成员变量进行操作?
追答是的
追问汗,书上例子中,直接用getwindowlong来获取this指针,放在静态回调成员函数中,这又是怎么回事?
能留个qq看下例子么?提问里说不清啊,已经私信您
比如有总统这个类,
#include
class President {
public:
President(const std::string &name) ;
void show_name();
private:
std::string m_name;
};
这个类的实现很容易如下:
#include "person.h"
#include
using namespace std;
President::President(const string& name) {
m_name = name;
}
void
President::show_name() {
cout
using namespace std;
static President* _thePresident = NULL;
President::President(const string& name) {
_thePresident = this;
m_name = name;
}
void
President::show_name() {
coutshow_name();
}
那么回调函数可以写成:
void show_president_name(void) {
President::who();
}
这里的get_president()的用法和你的getwindowlong
类似。
那静态成员里面,能否直接使用成员变量?
追答可以通过成员变量,或则函数更改静态成员。