gpt4 book ai didi

c++ - 如何通过保存在容器中的成员函数指针来调用?

转载 作者:行者123 更新时间:2023-12-01 16:39:24 24 4
gpt4 key购买 nike

我正在尝试编写一个成员函数,它依次调用同一对象的其他成员函数,直到其中一个成员函数起作用为止。

我想写如下:

class myClass
{
bool A() { return false; }
bool B() { return false; }
bool C() { return false; }
bool D() { return false; }
void doIt()
{
const QList<bool (myClass::*) ()> funcs({
&myClass::A, &myClass::B, &myClass::C, &myClass::D
});

bool result(false);
for (auto iter = funcs.cbegin(); !result && iter != funcs.cend(); ++iter)
{
result = this->(*iter) ();
}
}
};

但是我无法获得正确的语法来通过迭代器调用我的函数。 qt-creator显示错误

called object type 'bool (myClass::*)()' is not a function or function pointer

指向第二个左括号,g++ 报告

must use .* or ->* to call pointer-to-member function

指向第二个右括号,两者都在我分配给 DoIt 成员函数结果的行中。 (请注意,g++ 错误消息中的示例运算符包含在重音符号中,但如果我包含它们,标记会删除“*”。)

我可以找到很多关于如何通过指向成员函数的指针进行调用的示例,但是对于将指向成员函数的指针保存在集合中并在 this 中调用的这种组合,我找不到任何示例。/p>

最佳答案

由于 () 运算符的优先级绑定(bind),您需要添加更多括号:

result = (this->*(*iter))();

关于c++ - 如何通过保存在容器中的成员函数指针来调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58809650/

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