C++ 继承 指向成员的函数指针问题

CC2530 2011-07-09 01:01:47


class base_item
{
public:
void (base_item::*Handler)(void);
void AssignHandler(void (base_item::*handler)(void))
{
Handler=handler;
}
};

class derived_item:public base_item
{
public:
void func1(void)
{
};

void func2(void)
{
this->Handler=func1;
(this->*Handler)();
}

void func3(void)
{
this->AssignHandler(func1);
(this->*Handler)();
}
};



编译不通,怎么解决?
...全文
93 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq120848369 2011-07-09
  • 打赏
  • 举报
回复
#include <iostream>
using namespace std;

class base_item
{
public:
void (base_item::*Handler)(void);
void AssignHandler(void (base_item::*handler)(void))
{
Handler=handler;
}
void func1(void)
{
}

};

class derived_item:public base_item
{
public:


void func2(void)
{
this->Handler=&base_item::func1;
(this->*Handler)();
}

void func3(void)
{
this->AssignHandler(&base_item::func1);
(this->*Handler)();
}
};

int main()
{
derived_item a;
a.func2();
a.func3();
return 0;
}



这样可以糊弄通过.
qq120848369 2011-07-09
  • 打赏
  • 举报
回复
void (base_item::*Handler)(void);


这是base_iterm的函数指针,你用的是派生类的函数指针..

65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧