函数名称就是函数地址吗?请教一下
编译环境是VC2008.下面的程序编译不通过.请教请教问题说在.
#ifndef fun_addr_h
#define fun_addr_h
class Cbase
{
public:
typedef void (Cbase::*Cbase_fun_addr)(const int *); //oops 红杏出墙
Cbase(Cbase_fun_addr initial): my_fun_addr(initial)
{}
virtual ~Cbase()
{}
private:
Cbase_fun_addr my_fun_addr;
};
class Cderive : public Cbase
{
private:
int myCderiveCtr;
public:
Cderive() : Cbase((Cbase_fun_addr)initial) //这句编译不通过
//Cderive() : Cbase((Cbase_fun_addr)&Cderive::initial) //修改成这样就可以了.为什么?
//Cderive() : Cbase((Cbase_fun_addr)Cderive::initial) //这句编译不通过
{}
void initial(const int /** a*/)
{
myCderiveCtr = 0/** (*a)*/;
}
};
#endif // fun_addr_h
//main:
#include "fun_addr.h"
static Cderive derive; //oops
int main(int argc, char* argv[])
{
return 0;
}
[解决办法]
Cderive() : Cbase((Cbase_fun_addr)&Cderive::initial) //修改成这样就可以了.为什么?
标准上语法规定 记住即可
[解决办法]
楼主看下这个贴上的几个例子:
http://topic.csdn.net/u/20120313/09/bedb53e2-7bed-4b7b-9b8f-314a6a126bea.html