技巧总结:非静态成员函数的非法调用

最近为自己做个小工具,遇到的技术问题多多,还好有度娘帮衬,这才风雨飘摇的往目标慢慢接近,说起来那是步步惊心啊。

非法调用的问题,先看代码:

class 某党某师

{

public:

BOOL 清除卧底行动();

static BOOLCALLBACK 刺杀行动组();     // 隶属情报部门 CALLBACK,放这里是来某党某师执行任务的

void 爆破小队();

};


BOOL 某党某师::清除卧底行动()

{

return 情报部门行动(,,,刺杀行动组,,,);     //情报部门摸底排查,派出刺杀行动组   : 1号首长亲自指派情报部门来某党某师配合协助(调用系统API)

}


BOOL CALLBACK 某党某师::刺杀行动组()

{

爆破小队(); // 问题出来了,就是我们编译时会看到的:非静态成员函数的非法调用!

... ...

}

void 某党某师::爆破小队()

{

专业爆破;

}

------------------------------------------------------------------------------------------------------------------------------------------------

分析:

1. 刺杀行动组CALLBACK函数要么是全局的要么是类的静态函数,没有this(指针)的概念,眼里不认识啥地方部门的工作人员;

2.爆破小队隶属某党某师,他的一切行动都是this安排去执行的,在某党某师内行动,当然不需要时时表明身份:我是this的人;

结论:

这是信息沟通不全导致的误会,难怪刺杀行动组要驱赶爆破小队:老子这里是敏感部门,会爆破了不起啊,谁让你来的?没证件,老子就踢你,在编译环节上我告你:非静态成员函数的非法调用!!!

解决办法:

BOOL 某党某师::清除卧底行动()

{

LPARAM 特殊行动证明 =(LPARAM)this; //某党某师盖公章证明

return 情报部门行动(,,,刺杀行动组,,特殊行动证明;,);     //情报部门摸底排查,派出刺杀行动组   : 1号首长亲自指派情报部门来某党某师配合协助(调用系统API)

}


BOOL CALLBACK 某党某师::刺杀行动组(,证件,)

{

  某党某师* app = (某党某师*)(l证件);  
app->爆破小队
();                                      // 误会排除

... ...

}

你可能感兴趣的:(技巧总结)