C++里,在类中使用指向类成员函数的指针
2012-04-14 14:03
555 查看
#include <stdio.h> class A{ public: //p1是一个指向非static成员函数的函数指针 void (A::*p1)(void); //p2是一个指向static成员函数的函数指针 void (*p2)(void); A(){ /*对 **指向非static成员函数的指针 **和 **指向static成员函数的指针 **的变量的赋值方式是一样的,都是&ClassName::memberVariable形式 **区别在于: **对p1只能用非static成员函数赋值 **对p2只能用static成员函数赋值 ** **再有,赋值时如果直接&memberVariable,则在VS中报“编译器错误 C2276” **参见:http://msdn.microsoft.com/zh-cn/library/850cstw1.aspx */ p1 =&A::funa; p2 =&A::funb; //p1 =&A::funb;//error //p2 =&A::funa;//error //p1=&funa;//error,编译器错误 C2276 //p2=&funb;//error,编译器错误 C2276 } void funa(void){ puts("A"); } static void funb(void){ puts("B"); } }; int main() { A a(); //p是指向A中非static成员函数的函数指针 void (A::*p)(void); p = a.p1; (a.*p)();//打印A /*a.p2是指向static函数的函数指针, **尽管a.p2本身是个非static变量 **所以下面这就话是错的! */ //p = a.p2;//error return 0; }
参考资料:
1、C++类中函数指针赋值
2、编译器错误 C2276
相关文章推荐
- C++中,如何定义和使用指向成员函数的指针
- error C3867: “A::fun1”: 函数调用缺少参数列表;请使用“&A::fun1”创建指向成员的指针
- C++ 指向成员函数指针问题
- 函数调用缺少参数列表;请使用“&Student::Printf”创建指向成员的指针 问题解析
- “Caculate::writehtml”: 函数调用缺少参数列表;请使用“&Caculate::writehtml”创建指向成员的指针
- error C3867: “Point::getX”: 函数调用缺少参数列表;请使用“&Point::getX”创建指向成员的指针
- C++指向类成员函数的指针
- 深入探索C++对象模型之指向成员函数的指针
- [疑问]C/C++中为什么在类外利用多态基类指向派生类指针可以调用类的私有成员函数?
- C++成员函数指针的使用方法
- C++成员函数指针的使用范例
- “error C3867: “XXX”: 函数调用缺少参数列表;请使用“&XXX”创建指向成员的指针”的错误
- 如何使用c++的成员函数指针
- C++中指向成员函数的指针
- 使用纯C函数指针调用C++的类成员函数
- C++之指向对象成员函数的指针
- C++指向类成员函数的指针
- C/C++中为什么在类外利用多态基类指向派生类指针可以调用类的私有成员函数?
- C++中指向成员函数的指针
- [翻译]C++教程:指向成员函数的指针