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

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 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];
}
Теги:
pointers
function
vector
member

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
  • 0
    Это очень полезно, спасибо.
  • 0
    Это очень полезно, спасибо. Я полагаю, что он может быть помещен в цикл следующим образом: for (int i = 0; i <= NUM; i ++) {(objectvec [i] -> * functionlist [i]) (); } Но может ли это быть просто указатель на функцию-член без составной функции "(objectvec [i] -> * functionlist [i]) ()". как в одном вызове functionlist [i] ();
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню