C++ 成员函数指针调用问题
大家讲道理
大家讲道理 2017-04-17 13:23:45
[C++讨论组]

大家好:

此段代码中当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");
}

以上,请各位指教

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

全部回复(1)
PHP中文网
(iter.*second)(1); // error: 'second' was not declared in this scope

应该改成

(this->*(iter->second))(1);
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号