在 C 中,成员函数指针允许我们通过指针像常规函数一样对待成员函数。但是,必须遵循某些语法规则以避免编译错误。
考虑以下代码,我们尝试使用成员函数指针调用 cat 类的 walk 成员函数:
class cat { public: void walk() { printf("cat is walking \n"); } }; int main(){ cat bigCat; void (cat::*pcat)(); pcat = &cat::walk; bigCat.*pcat(); }
上面的代码无法编译,并出现错误“bigCat.*pcat(); 语句无法编译。”发生这种情况是因为语法存在优先级问题。
成员函数指针使用“.”运算符,而函数调用使用普通括号。函数调用的优先级高于“”。
要解决此问题,需要额外的括号来覆盖优先级规则:
(bigCat.*pcat)();
通过此更正,代码现在将通过成员函数指针正确调用 walk 函数.
以上是如何在C中使用指针正确调用成员函数?的详细内容。更多信息请关注PHP中文网其他相关文章!