Merkwürdige Fehlermeldung aufgrund von std::pair
-
Hi,
ich habe in einem Programm von mir eine Plugin Engine in Lua integriert.
Diese läuft via Maps, das sieht so aus:std::map <int, Lauch> LuaPlugins;
Lauch ist hier meine Lua-Handlerclasse, die den Speicher verwaltet (also initialisiert und bei der Zerstörung auch den Pointer auf die eigentliche Lua-Klasse freigibt, quasi ein Smart Pointer).
Als Test hab ich in der main-Funktion folgenden Code:
Lauch testlauch(); window->LuaPlugins.insert( std::pair <int, Lauch> (window->PluginCounter, testlauch) ); std::map <int, Lauch>::iterator Iterator = window->LuaPlugins.find(window->PluginCounter); // iterator für das eingetragene Plugin
Da wird mir beim kompilieren allerdings folgender (merkwürdiger?) Fehler ausgegeben:
se_main.cpp: In member function ‘virtual bool SEMain::OnInit()’: se_main.cpp:28: error: no matching function for call to ‘std::pair<int, Lauch>::pair(int&, Lauch (&)())’ /usr/include/c++/4.4/bits/stl_pair.h:83: note: candidates are: std::pair<_T1, _T2>::pair(const _T1&, const _T2&) [with _T1 = int, _T2 = Lauch] /usr/include/c++/4.4/bits/stl_pair.h:79: note: std::pair<_T1, _T2>::pair() [with _T1 = int, _T2 = Lauch] /usr/include/c++/4.4/bits/stl_pair.h:68: note: std::pair<int, Lauch>::pair(const std::pair<int, Lauch>&)
Das ganze wurde mit der GCC(g++) auf openSuSE 11.2 kompiliert (was eigentlich nichts ausmachen dürfte..).
Auf jeden Fall frage ich mich, was mir der Compiler da sagen möchte..
Hat vllt. jemand Ahnung von sowas? ;Olg.
-
Der Fehler liegt bereits in Zeile 27 deiner main.cpp -
testLaunch
ist kein default-konstruiertes Objekt, sondern die Deklaration einer parameterlosen Funktion. Wenn du die Klammern weglässt, müsste es funktionieren.