我有一个包含功能对象列表的类(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();