C++ 成员函数指针调用问题

发布于 2022-09-02 08:47:48 字数 738 浏览 32 评论 0

大家好:

此段代码中当callFunc找到结果的时候,我该如何调用存在在map中的 指向对象成员的函数指针 ?
class A{
public:
    typedef void (A::*pf)(int);
    typedef map<string, pf> script_map;

    A() = default;
    script_map m1;

    void func1(int a){
        cout << a << endl;
    }

    int callFunc(const string& key){
        script_map::const_iterator iter = m1.find(key);
        if(iter != m1.end()){
            //ok
            (iter.*second)(1); // error: 'second' was not declared in this scope
        }else{
            //error
        }
    }
};

int main(int argc, char **argv){
    A obj;
    obj.m1.insert(make_pair("key1", &A::func1));
    obj.callFunc("key1");
}

以上,请各位指教

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

怎樣才叫好 2022-09-09 08:47:49
(iter.*second)(1); // error: 'second' was not declared in this scope

应该改成

(this->*(iter->second))(1);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文