有没有一种方法可以从std :: function中提取对象指针?

时间:2019-05-27 19:06:18

标签: c++

我有一个包含功能对象列表的类(std :: function)。其他类可以将函数添加到列表中,并且这些函数可以绑定到该类的成员函数。一切正常。但是,我希望能够区分某个函数何时来自同一类的不同实例。是否可以从功能对象中提取此信息?

在下面的代码中,例如在Foo :: AddFunc()中,是否可以从函数对象中提取对象实例的值(即b1或b2)?

class Foo
{
public:

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

    void AddFunc(const Func &func)
    {
        // can i extract b1 or b2 here?
        m_funcs.push_back(func);
    }

    typedef std::vector<Func> Funcs;
    Funcs m_funcs;
};

Foo *g_foo = new Foo();

class Bar
{
public:

    Bar()
    {
        Foo::Func func = std::bind(&Bar::DoStuff, this, std::placeholders::_1);
        g_foo->AddFunc(func);
    }

    void DoStuff(int x)
    {
    }
};

...

Bar *b1 = new Bar();
Bar *b2 = new Bar();

0 个答案:

没有答案