Eventhandler Register



  • Hallo Community!

    Ich bitte euch um Hilfe bei folgendem Problem:
    Ich möchte eine Klasse command_handler erstellen bei dem ich mich mit einem Eventhandler Registieren kann (nicht statischer member)
    Zusätzlich möchte ich einen Parameter "command" übergeben können der in der AddHandler funktion abgearbeitet wird.
    Beim ausführen des Events sollte wiederum Parameter (std::vectorstd::string) übergeben werden können.

    Da ich keine grosse Erfahrung mit Templates habe bitte ich euch um eine Lösung für die Übergabe des Eventhandlers.

    Es sollten auch mehrere Commands Registriert werden können!
    Es sollten sich auch andere klassen registrieren können nicht nur die mainclasse darum auch ein Template.

    class mainclass
    {
        public:
            mainclass
            {
                command_handler handler;
                handler.AddHandler( "name hugo", this, &mainclass::RunMyFunction );
            }
    
        public:
            void RunMyFunction( std::vector<std::string> Parameter )
            {
                Führt irgendetwas aus.
            }
    }
    
    class command_handler
    {
        public:
            void AddHandler( std::string& _MyCommand, <template HandlerClass, HandlerFunction>,)
            {
                MyCommand und Handler speichern.
            }
    
        private:
            void RunHandler( std::vector<std::string> _Parameter )
            {
                Handler.run( _Parameter );
            }
    }
    

    mfg Mario Jungwirth



  • Tramtrammtramtram, die Lösung lautet:

    boost::signal<void(std::vector<std::string>&)> my_event;
    

    🙂


Log in to reply