[C/C++] OOP & Function Pointer?

  • In C sind Function-Pointer ja kein problem aber in C++ bring ich das nicht zustande.

    Hab 2 klassen die eine soll eine funktion in der anderen aufrufen und das über einen solchen pointer.

    ungefähr so hab ich mir das gedacht (funktioniert aber nicht):

    Ist es nicht möglich eine funktion aus einer anderen klasse zu verwenden?

  • Funktionspointer gibts schon. Aber ich glaub nicht innerhalb von Klassen. Das kann ja nicht gehen, da es den Code für die Klassen eigentlich nur einmal irgendwo im Speicher gibt. Du müsstest wiederum das Objekt übergeben und über das kannst du dann auf die Funktion zugreifen.

    :thumb: Geschrieben nach der alten, neuen und zukünftigen Rechtschreibung! :thumb:

  • Hi,

    Vielleicht hilft dir folgendes Beispiel weiter:

    Prinzipiell gilt: Wenn du einen Pointer auf eine nicht-statische Member-Funktion hast, dann brauchst du auch eine Instanz eines Objekts der entsprechenden Klasse, auf der du die Funktion dann anwenden kannst.

    Alternativ dazu kannst du einen Pointer auf eine statische Funktion verwenden (wenn deine Funktion keinen Zugriff auf Instanz-Variablen benötigt).

    Eins Zwei Gras Bär Hund Vier Muh Macht Die Kuh

  • Zitat von Kongo

    Funktionspointer gibts schon. Aber ich glaub nicht innerhalb von Klassen.

    Doch, und zwar gibt es zweierlei Varianten:
    a) Zeiger auf statische Member-Funktionen
    Die verhalten sich so ziemlich identisch zu den Funktionszeigern in C.
    b) Zeiger auf nicht-statische Member-Funktionen
    Dazu gleich mehr.

    Zitat


    Das kann ja nicht gehen, da es den Code für die Klassen eigentlich nur einmal irgendwo im Speicher gibt. Du müsstest wiederum das Objekt übergeben und über das kannst du dann auf die Funktion zugreifen.

    Du sagst es geht nicht, bringst dann aber einen Vorschlag, wie es doch geht. Und genau so ist es auch im Standard vorgesehen :)

    Logischerweise brauchst Du natürlich dann für den Aufruf eines Zeigers auf eine nicht-statische Member-Funktion eine Instanz eines Objekts der entsprechenden Klasse, für die die Funktion dann ausgeführt wird.

    Eins Zwei Gras Bär Hund Vier Muh Macht Die Kuh

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!