Lokale Funktionen!



  • Hi, ich hab mir ne Buttonklasse für SDL geschrieben, und übergebe den buttons eine funktion, welche ausgeführ werden soll, wenn der button gedrückt wird. Wie kann ich beim erstellen der buttons eine lokale funktion definieren, damit ich die ganzen buttonfunktionen nicht global rumliegen habe?

    thx



  • C++ kennt keine lokalen Funktionen - da IST alles global. Du könntest deine Handlerfunktionen höchstens in einen eigenen Namensraum packen, dann sind sie unter sich.

    PS: Und zur Laufzeit des Programms kannst du überhaupt keine Funktionen definieren - du kannst nur die Funktionen verwenden, die bereits existieren.



  • C++ kennt aber lokale Klassen. Du könntest also Funktionsobjekte verwenden:

    void foo()
    {
    	struct bar_
    	{
    		void operator()( const char* str ) const
    		{
    			std::cout << str << std::endl;
    		}
    	} bar;
    
    	bar( "Hallo Welt" );
    }
    
    int main()
    {
    	foo();
    }
    

Anmelden zum Antworten