对于一般的函数指针我们都比较了解了,而类的成员函数指针以及调用方式都有所不同。博主在调Bug的过程中,将相关资料整理到这篇博客中,仅供参考。

        首先,函数指针大家一般喜欢用 typedef 先定义出类型,然后用该类型继续定义变量,当然函数指针也可以直接定义:

        一般的函数指针都向上面那样就可以了,但是,在类内部定义一个函数指针,要再内部或外部进行调用,操作都会有所不同,这是StackOverFlow对某个函数指针调用问题的解释。如果不按照这种方式调用,会出现 expression preceding parentheses of apparent call must have (pointer-to-) function type 编译错误。

        定义也要在 * 之前加上类名,于是定义和调用的完整过程就是:

        为什么在类外部调用需要这么写呢?刚刚那个StackOverFlow上写的很清楚:

    (a->*X)(...) – dereferences a member function pointer – the parens around a->*X are important for precedence.

        类的成员函数指针在有些编译器中不会报错,但是我们依然需要遵守标准和规则。

        OK,See You Next Chapter!

发表评论

电子邮件地址不会被公开。 必填项已用*标注