samedi 1 juillet 2017

unresolved external symbol when passing a function pointer [duplicate]

I'm trying to create a generic button and I want to be able to pass a function to call when I click it.

main.cpp:

#include "Window.h"

int testfunction() {
   print("Test");
   return 1;
}

...other stuff...

window->SetButtonFunction_NoArgs<int>(" *unrelated stuff* ", &testfunction);

window is a WindowMain class:

window.h:

class WindowMain {
     *Stuff*
     template <class R1> void SetButtonFunction_NoArgs(string id, R1(*func)());
     *Other Stuff*
};

window.cpp:

///Find the object of that id and set the fuction to it
template <class R1> void WindowMain::SetButtonFunction_NoArgs(string id,  R1(*func)()) {
    for (int i = 0; i < objects_.size(); i++) {
        if (objects_[i].getId() == id) {
            objects_[i]->AddButton_NoArgs<R1>(func);
        }
    }
}

The problem is here somewhere I think but I can't find it... When I try to compile it gives me this:

1>main.obj : error LNK2019: unresolved external symbol "public: void __cdecl WindowMain::SetButtonFunction_NoArgs<int>(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,int (__cdecl*)(void))" (??$SetButtonFunction_NoArgs@H@WindowMain@@QEAAXV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@P6AHXZ@Z) referenced in function "void __cdecl Create(void)" (?Create@@YAXXZ)

Thanks for help!

Aucun commentaire:

Enregistrer un commentaire