如何使用特定对象的函数指针调用成员函数

时间:2011-09-08 18:25:43

标签: c++

我有这段代码:

#include <iostream>

class foo
{
    public:
        foo(int yy){y = yy;}
        void f(int x){std::cout<<x;}

    private:
        int y;
};

void main()
{
    foo* obj = new foo(123);
    void (foo::*func)(int) = &foo::f;

    //how do I call func with obj as this?
    delete obj;
}

这可能吗?

1 个答案:

答案 0 :(得分:3)

你称它为:

(obj->*func)(42);

由于“应用函数调用”优先于取消引用-PTM ->*运算符,因此需要第一组括号。

您还可以使用std::bind

std::function<void(int)> my_f = std::bind(func, obj, std::placeholders::_1);

my_f(43);