C++中怎么获取类的成员函数的函数指针

2024-11-28 19:33:45
推荐回答(2个)
回答1:

虾米意思?是指类的成员变量是否可以指向类中的成员函数吗?如果这样子的,类的成员函数指针就是用来起这个作用,mfc消息路由机制也是机遇此原理。#include class A{public: A() \/\/ Ctor { m_pfn1 = A::foo; \/\/ 有没有取地址符号一样 m_pfn2 = &A::bar; (this->*m_pfn1)(); (this->*m_pfn2)(0); } void foo(){printf("foo\n");} \/\/ 类函数 virtual void bar(int){printf("bar\n");} void (A::*m_pfn1)(); \/\/ 类函数指针成员变量 void (A::*m_pfn2)(int); \/\/ 类函数指针成员变量};int _tmain(int argc, _TCHAR* argv[]){ \/\/ 1. 类函数指针成员变量的使用 A a; A* p = &a; (a.*(a.m_pfn1))(); (a.*(a.m_pfn2))(0); \/\/ 多态 (p->*(p->m_pfn1))(); (p->*(p->m_pfn2))(0); \/\/ 多态 \/\/ 2. 类外函数指针变量的使用 typedef void (A::*MemFunPtr)(); MemFunPtr memPtr = &A::foo; (a.*memPtr)(); (p->*memPtr)(); return 0;}\r\n补充:\r\n->* 和.* 是C++新增加的操作符号,专用类成员指针变量取址(成员函数指针,成员变量指针)\r\n

回答2:

1.一个指向外部函数的指针声明为:

void(*pf)(char*,constchar*);
void strcpy(char* dest,constchar* source);
pf=strcpy;
2.一个指向类A成员函数的指针声明为:

void(A::*pmf)(char*,constchar*);