首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >指向成员函数的指针-不想工作

指向成员函数的指针-不想工作
EN

Stack Overflow用户
提问于 2012-03-31 18:09:59
回答 1查看 129关注 0票数 2

在这段简短的代码中:

代码语言:javascript
复制
class X
{
private:
    class Y
    {

    public:
        typedef void (X::* ptr_to_mem)();
        Y(X* parent,ptr_to_mem ptr):parent_(parent),ptr_(ptr)
        {}
        void run()
        {
            parent_->*ptr_();//at this line I'm getting an error
        }
    private:
        X* parent_;
        ptr_to_mem ptr_;
    };

public:
    void some_fnc()
    {
        cout << "some_fnc";
    }

    void another()
    {
        Y y_(this,&X::some_fnc);
        y_.run();
    }

};

错误:

代码语言:javascript
复制
error: must use '.*' or '->*' to call pointer-to-member function in '((X::Y*)this)->X::Y::ptr_ (...)', e.g. '(... ->* ((X::Y*)this)->X::Y::ptr_) (...)'
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-03-31 18:15:18

添加一对额外的括号:

代码语言:javascript
复制
(parent_->*ptr_)();

参见C++FAQ lite 33.6

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9954973

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档