std::vector aus std::pair aus std::string und Methodenpointer



  • Wie lautet die Syntax dafür?

    Wenn ich

    std::vector<std::pair<std::string,void (myClass::*)()> >
    

    dann sagt der Compiler, er würde einen Bezeichner erwarten. Wie kann ich das lösen?

    Noch ein kleiner Hinweis zum Zweck: Wenn ein gewisser String gegeben ist, soll dazu eine Funktion aufgerufen werden. std::map funktioniert in meinem speziellen Falle nicht.



  • Versuch' doch mal, diesem Gebilde einen Namen zu geben:

    std::vector<...> myvec;
    

    PS: Dir ist hoffentlich klar, daß du zum Aufrufen der dort reingepackten Methoden ein Objekt vom Typ myClass benötigst.



  • Sorry, Name steht natürlich dahinter. Hatt ich vergessen. myClass existiert, und zwar als Templateparameter und als Instanz als "normales" Argument.



  • An #include <vector>, #include <string>, #include <utility> gedacht?
    Definition von myClass ist sichtbar?
    Keine Syntaxfehler in der Zeile davor?



  • Ist alles geprüft. Wenn ich was anderes einsetze, lässt es sich kompilieren.



  • Ist der Name myClass an der Stelle mehrdeutig?



  • Jetzt zieht ihm nicht alles einzeln aus der Nase 😃

    @Lars Hupel: Mehr Code bitte 😉



  • #include <utility>
    #include <string>
    #include <vector>
    
    class TfrmSettings : public TFrame
    {
      //...
      public:
        template<class FrameT>
        static void show(TForm *calling,FrameT *content,...,
                         const std::vector<std::pair<std::string,void (FrameT::*)()> >& buttonlist)
    };
    

    Ich vermute mal der erwartet hinter FrameT:: einen Bezeichner.


Log in to reply