高手请进=====>类成员函数指针问题,明明有值,赋值后却变成空!

superyys 2008-09-12 05:41:48
首先申明DEF类
class DEF
{
private:
int m_i;
public:
DEF(int i)
{
m_i=i;
}
bool test()
{
ShowMessage(IntToStr(m_i));
}
};

调用代码

void DEF::* p1;
p1=static_cast<void DEF::*>(DEF::test);

上述这段代码运行结果p1总是NULL,换成p1=static_cast<void DEF::*>(&DEF::test);也能编译通过,但一样p1返回NULL值,真是百思不得其解.
实际上DEF::test肯定是有值的,而且在调试器里也看得到,试想一下,如果DEF:test没有值, 那一具初始化的def对象怎么调用这个类的test()?
有没有高人写过类似的代码? 有没有想到其它比较好的解决方案?
不要告诉我将p1 申明成bool (DEF::*p1)(); ,这样运行没问题,但是失去了void指针的通用性.
我就是想在基类里定义一个
template <class T>
void T::* p1;的通用指针,供继承类使用.
...全文
157 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
superyys 2008-09-13
  • 打赏
  • 举报
回复
我用的是C++ Builder 6
稍微土了点
superyys 2008-09-13
  • 打赏
  • 举报
回复
楼上的正解,谢谢啦.
K行天下 2008-09-13
  • 打赏
  • 举报
回复
p1=static_cast <void (DEF::*)()>(DEF::test); 
test4ever 2008-09-12
  • 打赏
  • 举报
回复
你用的什么编译器?
aayy 2008-09-12
  • 打赏
  • 举报
回复
类的成员函数在调用的时候是有一个隐含的this指针的
你考虑你这样定义的指针,在调用的时候"this"从哪里取?

64,282

社区成员

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

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