成员函数指针表

翻译 2012年03月31日 17:07:36

函数指针和成员函数指针的一个公共用途是,将它们存储在函数表中。函数表是函数指针的集合,在运行时从中选择给定调用。

对具有几个相同类型成员的类而言,可以使用这样的表来从这些成员的集合中选择一个。假定扩展screen类以包含几个成员函数,其中每一个在特定方向移动光标:

class Screen
{
public:
	//other interface and implementation members as before
	//same type of functions for cursor movement, can be integrated into member function pointer array.
	Screen &   home();
	Screen &	 forward();
	Screen &  back();
	Screen &  up();
	Screen & down();
};

我们可能希望定义一个move函数,它可以调用这些函数中的任意一个并执行指定的动作,为此,在Screen中增加一个static成员,该成员是光标移动函数的指针的数组。
class Screen
{
	//Action is pointer that can be assigned any of the cursor movement members
	typedef Screen & ( Screen:: * Action )  ();
	//function table
	static Action menu[];

	//specify which direction to move
	enum Directions { HOME, FORWORD, BACK, UP, DOWN };
	Screen & move ( Directions );
};

名为menu的数组将保存指向每个光标移动函数的指针,将在对应于Direction中枚举成员的偏移位置保存那些函数,move函数接受枚举成员并调用适当函数:

Screen & Screen::move( Directions cm )
{
	//fetch the element in Menu indexed by cm
	//run that member on behalf of this object
	( this->*menu[cm])();
	return *this;
}

调用move时,传给它一个枚举成员,指出向哪个方向移动光标:

	Screen myScreen;
	myScreen.move(Screen::HOME);
	myScreen.move(Screen::BACK);

剩下的是定义和初始化表本身:

Screen ::Action Screen ::menu [] =
{
	&Screen::home,
	&Screen::forward,
	&Screen::back,
	&Screen::up;
	&Screen::down
};


c++ 成员函数指针

  • 2010年04月11日 11:39
  • 9KB
  • 下载

C++类成员函数指针2

  • 2012年11月17日 16:54
  • 4KB
  • 下载

C++知识点随笔(七):成员函数指针、模拟虚函数列表

成员函数指针普通的全局函数指针定义:typedef void (*PFUN)();普通的函数指针可以指向返回值和参数类型都相同的全局函数,可是成员函数该怎么办呢?如果成员函数是static的,那么可以...

类的成员函数指针(比较深入)

From:http://blog.csdn.net/hairetz/archive/2009/05/06/4153252.aspx个人感觉对于类的成员函数指针这块讲解的比较深入详细推荐阅读//////...

成员函数指针与高性能的C++委托

http://www.cnblogs.com/jans2002/archive/2006/10/13/528160.html 成员函数指针与高性能的C++委托 Member Function ...

成员函数指针与高性能的C++委托(中篇)

转自:http://club.topsage.com/thread-553920-1-1.html 成员函数指针——为什么那么复杂? 类的成员函数和标准的C函数有一些不同。与被显式声明的参数相...

c++成员函数指针的应用

C++中,成员指针是最为复杂的语法结构。但在事件驱动和多线程应用中被广泛用于调用回叫函数。在多线程应用中,每个线程都通过指向成员函数的指针来调用该函数。在这样的应用中,如果不用成员指针,编程是非常困难...

类的成员函数指针(比较深入)

From:http://blog.csdn.net/hairetz/archive/2009/05/06/4153252.aspx 个人感觉对于类的成员函数指针这块讲解的比较深入详细 推荐阅读 ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:成员函数指针表
举报原因:
原因补充:

(最多只允许输入30个字)