Как использовать список функций для указания функции-члена в векторном объекте?

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 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];
}
</void*></object*>
1 ответ

Вы хотите это:

std::vector<void(object::*)()> functionlist; // container

functionlist.push_back(&object::function); // add pointer-to-member-fn

(objectvec[0]->*functionlist[0])(); // invoke ptmf on an instance
</void(object::*)()>

licensed under cc by-sa 3.0 with attribution.