我需要像这样在某处存储一个成员函数指针:
void Class1::function1(int a, int b)
{
...
}
struct parameters
{
int a;
int b;
}
myStoreClass.store(&Class1::function1, parameters);
然后可以像这样调用它:
myStoreClass.call();
以便使用适当的参数调用该函数。
既然它是一个成员函数,我想我也应该存储一个 Class1 对象指针,但是我如何用模板存储一个成员函数指针?
最佳答案
需要参数化成员函数所在对象的类型,并传递一个指向该函数的指针。为了调用成员函数,您还需要传递指向对象的指针和调用参数。这是一个示例:
class Foo
{
public:
void DoIt (int a, int b)
{
}
};
class Bar
{
public:
void DoItAgain (int x, int y)
{
}
};
template <typename Obj>
void DoSomething (Obj* that, void (Obj::*fnThat)(int,int), int i, int j)
{
(that->*fnThat)(i, j);
}
int main()
{
Foo foo;
Bar bar;
void (Foo::*fnFoo)(int,int) = &Foo::DoIt;
(foo.*fnFoo)(42,43);
DoSomething (&foo, fnFoo, 99, 100);
DoSomething (&bar, &Bar::DoItAgain, 200, 300);
}
关于c++ - 在模板中存储类成员函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17975164/