高手请进=====>类成员函数指针问题,明明有值,赋值后却变成空!
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;的通用指针,供继承类使用.
相关推荐
C++ 一般(普通)函数指针、类成员函数指针,用法区别,以及强制转换
博文地址:https://blog.csdn.net/maoyeahcom/article/details/107106680
函数指针就是指向函数的指针;类成员方法指针,类具有类域操作符
函数指针,就是指向函数的指针。在C++中,函数指针一般是指全局命名空间中的函数指针,类成员函数指针,与函数指针不同的是,类具有类域操作符,在声明类成员函数指针的时候,要指定成员函数返回值类型、类域操作符、成员函数参数列表
C++类成员函数指针[项目源码]
本文详细介绍了C++中类成员函数指针的使用方法,包括静态和非静态成员函数指针的语法及实例。文章首先指出直接像C语言那样使用类成员函数指针会报错,并提供了两种解决方法:将非静态成员方法改为静态方法或正确使用类成员函数指针。接着,文章详细讲解了非静态成员方法函数指针和成员方法函数指针的语法,并通过实例代码展示了如何在实际编程中使用这些指针。实例代码包括静态函数指针的使用、成员函数指针的使用以及通过成员函数调用其他成员方法的示例。
C++指向类成员函数的指针详细解析
由于这几天在开发中要用到函数指针,所以就整理了一下关于函数指针的概念
C++ 指向类成员的指针
前面曾写过一篇恼人的函数指针(一),总结了普通函数指针的声明、定义以及调用,还有函数指针数组,函数指针用作返回值等。但是作为C++的研读,我发现我漏掉了一个最重要的内容,就是指向类成员的指针,这里将做相应补充(相关代码测试环境为vs 2010)。 指向类成员的指针总的来讲可以分为两大类四小类(指向数据成员还是成员函数,指向普通成员还是静态成员),下面一一做介绍: 一、指向类的普通成员的指针(非静态) 1、指向类成员函数的指针 简单的讲,指向类成员函数的指针与普通函数指针的区别在于,前者不仅要匹配函数的参数类型和个数以及返回值类型,还要匹配该函数指针所属的类类型。总结一下,比较以下几点: a)参


