无效指针从A类到B类方法

时间:2014-12-25 14:50:01

标签: c++ function pointers methods member

我需要知道是否可以转换' 从一个类到另一个类的成员变量的方法 所以我可以从另一个类(例如从bar)调用这个方法(来自例如foo)

应该看起来像

void bar::setFunction( void(*f)())
{
    /*bar::*/func = f; // func <= void (*func)();
}

int main()
{
    foo myclass;
    bar myotherclass;

    bar.setFunction( &myotherclass.dosth);
}

1 个答案:

答案 0 :(得分:0)

这解决了我的问题:

typedef std::function<void()> Func;

class bar
{
public:
    void setFunction( std::function<void()> f ) {
        func = f;
    }
    void call()
    {
        func();
    }
private:
    Func func;
};

class foo
{
public :
    static void dosth()
    {
        std::cout << "hallo" << std::endl;
    }
};



int main( int argc, char** argv )
{
    foo myclass;
    bar myotherclass;
    Func fd = &myclass.dosth;
    myotherclass.setFunction( fd );
    myotherclass.call(); // this calls the foo method dosth -> "hallo"
    _sleep( 600 );
}