如何通过成员函数指针进行调用
How to call through a member function pointer?
我正在尝试对成员函数指针进行一些测试。这个代码出了什么问题?bigCat.*pcat();
语句未编译。
class cat {
public:
void walk() {
printf("cat is walking n");
}
};
int main(){
cat bigCat;
void (cat::*pcat)();
pcat = &cat::walk;
bigCat.*pcat();
}
需要更多的括号:
(bigCat.*pcat)();
^ ^
函数调用(()
)的优先级高于指向成员绑定运算符的指针(.*
)。一元运算符的优先级高于二元运算符。
如今,规范的方法是使用std::invoke函数模板,尤其是在泛型代码中。请注意,成员函数指针位于第一位:
import <functional>;
std::invoke(pcat, bigCat);
您得到的是:几乎所有可调用的东西都有统一的调用语法。
开销:无。
相关文章:
- 为什么使用 "this" 指针调用派生成员函数?
- 当使用通配符和null指针调用函数时,对输出的说明
- 使用共享指针的函数调用,其对象应为 const
- 如何调用指针类型的方法(禁用多态性)?
- C++:这是使用整数变量作为函数调用指针的正确方法吗
- 正确的方法是什么?调用指针到指针到指针内部的函数?
- 参数的混合值,当我调用指针成员函数时
- 调用指针时违反 C++ Typedef 访问冲突
- 调用指针参数从const函数指向的对象的操作员
- 为什么调用指针后给出错误的值
- 正在调用指针和引用方法
- 从c++线程调用指针
- 如何在c++中调用指针成员变量的构造
- Fortran调用c++指针函数
- 递归中修改调用指针的问题
- 如何在类定义中调用指针成员函数
- 在矢量中调用指针函数的方法
- 在类中调用指针函数
- 调用指针到成员函数
- 如何使用QtConcurrent::run调用指针作为参数的非类成员函数