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。 –