类成员函数指针

C语言的函数指针可谓家喻户晓,但今天有人问我类成员函数指针如何写,我很随意就给出了一个答案,编译不过,然后又改又不过最后经多方修改终于可以编译过了,并正常使用了。

下面给出的方法是函数指针和被指向函数在同一个类当中:

class CallBack
{
	public:
		CallBack()
		{
			Func=&CallBack::f;
		}
		void f()
		{
 
		}
		void invoke()
		{
                        //(*Func)();不加this->也编译不过
			(this->*Func)();
		}
                //函数指针,蹩脚的定义方式
		void(CallBack::*Func)();
};
int main(int argc, const char *argv[])
{
	CallBack test;
	//test.*Func();直接用,竟然编译不过,放在invoke函数里用this指针调用就可以
	test.invoke();
	return 0;
}

如果成员的函数指针指向的是其它类的成员函数就只能用模板类了:

class CallBack0
{
	public:
		CallBack0(T &t, void(T::*Func)()) : t(t), Func(Func)
		{
 
		}
		void invoke()
		{
			(t.*Func)();
		}
                //函数指针
		void(T::*Func)();
		T t;
 
};
int main(int argc, const char *argv[])
{
	CallBack test;
	//test.*Func();竟然编译不过
	test.invoke();
	CallBack0 test0(test, &CallBack::f);
	test0.invoke();
	return 0;
}

学打太极

久居实验室,身体每况日下,那天吃饭碰上已经退休多年还经常来实验室的蒋老师。蒋老师也是个闲不住的主儿,拉住我在那讲述他每天早上都去打太极拳的事。

之后某天突然有种冲动也想去练练太极,就去找蒋老师询问,他说家属区那正好有个付师傅每天在那教杨世太极。

早上6点起床,本科+研究生念了快6年,这么早起床的次数一只手就数得过来。因为住在学生宿舍,不比家里想几点睡就几点睡,早早的睡觉的确是种奢望。所以这么早起床对我来说确实是一种煎熬,今天是第四天了,虽然晚上早睡还是有点困难,不过早起的感觉然后晨练的感觉确实挺不错的。

打太极一来强身健体,二来我是个急性子,想借此磨练一下性子,从小到大很少有能把一件事情完完整整的坚持下来,希望这次会有所不同。

坚持到底!!