高手请进=====>类成员函数指针问题,明明有值,赋值后却变成空!
首先申明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;的通用指针,供继承类使用.