Nay*_*iya 56 c++ function-pointers
我正在尝试使用成员函数指针进行一些测试.这段代码有什么问题?该bigCat.*pcat();
声明无法编译.
class cat {
public:
void walk() {
printf("cat is walking \n");
}
};
int main(){
cat bigCat;
void (cat::*pcat)();
pcat = &cat::walk;
bigCat.*pcat();
}
Run Code Online (Sandbox Code Playgroud)
Jam*_*lis 92
需要更多括号:
(bigCat.*pcat)();
^ ^
Run Code Online (Sandbox Code Playgroud)
函数call(()
)的优先级高于指向成员的绑定操作符(.*
).一元运算符的优先级高于二元运算符.
neo*_*nxc 19
如今,规范的方法是使用std::invoke函数模板,尤其是在通用代码中。请注意,成员函数指针首先出现:
import <functional>;
std::invoke(pcat, bigCat);
Run Code Online (Sandbox Code Playgroud)
您将得到什么:几乎任何可调用的统一调用语法。
开销:无。
归档时间: |
|
查看次数: |
46160 次 |
最近记录: |