Programmieren - alles kontrollieren 4.941 Themen, 20.715 Beiträge

c++: Zeiger auf Funktionen?

Yves3 / 3 Antworten / Baumansicht Nickles

Hallo

Ich überlege mir gerade, wie ich am besten ein GUI mit DirectInput realisieren könnte.
Dabei müssen bei jedem Klick alle Buttons und sonstigen klickbaren Elemente überprüft werden.

Ich hatte die Idee, man könnte doch eine Klasse machen, der Buttons als Klassenelemente hinzugefügt werden können.
Man müsste also die Position und die Art des Buttons übergeben.
Soweit so gut, jetzt kommt aber mein eigentliches Problem.

Jeder Button führt ja eine Aktion aus.
Die Funktion des Buttons muss ihm ja auch irgendwie mitgeteilt werden.
Gibt es also irgendwie eine Möglichkeit, den Zeiger auf eine Funktion zu übergeben? Ist das so überhaut sinnvoll, wie ich mir das hier zurechtgelegt habe? Meine Vorstellung ist halt noch ein bisschen wage.

Natürlich bin ich auch für andere Lösungsansätze offen und dankbar!

Vielen Dank im Voraus!

bei Antwort benachrichtigen
d-oli Yves3 „c++: Zeiger auf Funktionen?“
Optionen

Hi

Das mit den Pointern könnte funktionieren. Du könntest ein Objekt (z.B. oButton) als Pointer übergeben und anschliessend mit mit dem -> Operator auf die entsprechende Methode zugreifen.

Was für eine GUI Lib verwendest du denn? Es gibt GUI Libs die solche mechanismen bereits zur Verfügung stellen.

Gruss, d-oli

Konstruktive Kritik zeichnet sich dadurch aus, dass sie höflich, nützlich und sachlich ist.
bei Antwort benachrichtigen
Yves3 d-oli „Hi Das mit den Pointern könnte funktionieren. Du könntest ein Objekt z.B....“
Optionen

Ich verwende keine GUI Lib, ich möchte das GUI selbst entwickeln.
Es soll aber möglichst vielseitig einsetzbar sein.

Mein Problem ist aber immer noch, wie ich die Funktion integriere.
Ich kann ja nicht für jeden Button eine eigene Klasse mit einer eigenen Methode schreiben.
Es existiert auch nicht schon eine Funktion für alles, was von den Buttons gemacht werden soll.
Einen direkten Zeiger auf die Funktion ist also nicht möglich?

EDIT: Ah sorry, jetzt verstehe ich.
Alle Funktionen in der Button Klasse...
Eigentlich ziemlich offensichtlich :D

Danke!

[Diese Nachricht wurde nachträglich bearbeitet.]

bei Antwort benachrichtigen
d-oli Yves3 „Ich verwende keine GUI Lib, ich möchte das GUI selbst entwickeln. Es soll aber...“
Optionen
Einen direkten Zeiger auf die Funktion ist also nicht möglich?
Doch so z.B.:

// Funktion
static void yourFunction( void* pData, const char* pName, const char** pAttributes )
{
// ...
}

// Methoden - Deklaration
// ...
void yourMethod( void ( *pFunctionPointer )( void*, const char* , const char**) );
// ...

ANTWORT AUF EDIT: Ja genau. Kapselung ... ;-)

[Diese Nachricht wurde nachträglich bearbeitet.]
Konstruktive Kritik zeichnet sich dadurch aus, dass sie höflich, nützlich und sachlich ist.
bei Antwort benachrichtigen