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];
}
4

1 回答 1

2

你要这个:

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
于 2013-10-06T16:18:04.247 回答