- C/C++ code
#include<stdio.h>typedef int (*printfun)(char *str);class A{public: void ap(printfun pf) { pf("aaaaa"); printf("calss A\n"); }};class B{public: int print(char *str) { printf("class B : %s\n",str); } void bp() { A a; a.ap(print); }};void main(){ B b; b.bp();}
vc6下编译错误:
C:\Documents and Settings\Administrator\test.cpp(27) : error C2664: 'ap' : cannot convert parameter 1 from 'int (char *)' to 'int (__cdecl *)(char *)'
None of the functions with this name in scope match the target type
------解决方案--------------------
typedef int (*B::printfun)(char *str);
成员函数指针和普通的函数指针是不同的。
要区分开来
------解决方案--------------------
print函数是B的成员函数 在A中用this->printfunc调用不了的 你这个已经没意义了 除非得到B对象的地址
------解决方案--------------------
http://blog.csdn.net/wohaaitinciu/article/details/7436006
------解决方案--------------------