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? ;O

    lg.



  • 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.


Log in to reply