gpt4 book ai didi

c++ - 如何通过迭代器通过指针调用函数?

转载 作者:行者123 更新时间:2023-11-27 23:01:13 26 4
gpt4 key购买 nike

我已经声明了一个全局类型:

typedef void ( MyClass::*FunctionPtr ) ( std::string );

然后我需要在我的函数中使用它:

void MyClass::testFunc() {
}
void MyClass::myFunction() {

std::map < std::string, FunctionPtr > ptrsMap;
ptrsMap[ "first" ] = &MyClass::testFunc;

std::map < std::string, FunctionPtr >::iterator it;
it = ptrsMap.begin();

( *it->second ) ( "param" ); // How to call this function?

}

问题是使用 std::map 的迭代器通过指针调用函数。如何调用该函数?

我想如果我将“it”声明为全局变量并像这样调用 smth,一切都会正常工作:

( this->*it->second ) ( "param" );

但我需要使用局部变量调用该函数。

最佳答案

成员函数需要关联一个实例。

    MyClass k;
(k.*it->second)("param");

或者你可以使用当前对象

(*this.*it->second)("param");

此外,您的 testFunc 需要采用字符串参数。

关于c++ - 如何通过迭代器通过指针调用函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27462703/

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