gpt4 book ai didi

使用函数指针调用成员函数的 C++ 语法

转载 作者:行者123 更新时间:2023-11-30 04:29:19 25 4
gpt4 key购买 nike

下面的例子使用了一个指向类 Blah 的成员函数的函数指针。函数指针的语法对我来说很清楚。但是,在调用时,我不得不在 this->*funcPtr 周围加上括号,我不确定为什么需要这样做。我想这与 C++ 计算表达式的方式有关。使用的编译器是VS 2008。

#include <iostream>

using namespace std;

struct Blah {

void myMethod(int i, int k) {
cout << "Hi from myMethod. Arguments: " << i << " " << k << endl;
}

typedef void (Blah::*blahFuncPtr)(int, int);

void travelSomething(blahFuncPtr funcPtr) {
(this->*funcPtr)(1, 2);
// w/o the brackets I get C2064 in VS 2008
// this->*funcPtr(1, 2);
}
};

int main() {
Blah blah;
blah.travelSomething(&Blah::myMethod);
cin.get();
return 0;
}

最佳答案

函数调用运算符 () 比“指向成员的指针”运算符 ->* 具有更高的优先级。

参见,例如,here .

关于使用函数指针调用成员函数的 C++ 语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9461095/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com