0
struct object
{
void function()
{
std::cout << "function" << std::endl;
}
};
int main()
{
// create vectors for objects and functions)
std::vector<object*> objectvec;
std::vector<void*> functionlist;
objectvec.push_back(new object);
// create a pointer to an object's function
void (object::* ptfptr_function) (void) = &object::function;
functionlist.push_back(&ptfptr_tryfunc);
// how do I call "functionvec[0]->tryfunc()" using the functionlist?
// (following line does nothing:)
functionlist[0];
}
这是非常有帮助,谢谢。 – user2852086
这非常有帮助,谢谢。我猜想它可以放置在如下循环上: for(int i = 0; i <= NUM; i ++) {objectvec [i] - > * functionlist [i])(); } 但是,它可以简单地作为指向特定成员函数的指针,而不需要复合函数“(objectvec [i] - > * functionlist [i])()”。 在一次调用中 functionlist [i](); – user2852086
@ user2852086:否。成员函数不是函数。你不能*调用*成员函数。你只能将它与一个对象结合起来调用它*。把它看作是“你班上的抵消”。如果要将特定对象绑定到成员函数,请使用'std :: mem_fn'或'std :: bind'或lambda。 –