Funktion als Parameter

R

Reimer

Aktives Mitglied
Thread Starter
Dabei seit
01.06.2007
Beiträge
327
Reaktionspunkte
3
Hiho.

wollte mal wissen, wie ich ne Member-Funktion als Parameter übergebe?

Bisher war stepCallback aus dem unteren Abschnitt als Klassen-Funktion definiert, ich mußte das allerdings ändern. Jetzt moniert der Compiler einen undefinierten Datentyp (2. Zeile). Ich hoffe die 4 (relevanten) Code-Zeilen reichen, um mein Problem zu schildern...

Code:
static void stepCallback(void* userData);
quartzModuleWithTowerCom = new PC_qt(this, this->stepCallback, this);


typedef void (*cycleCallback_t) (void* userData); 
PC_qt(QObject *parent, cycleCallback_t cycleCallback, void* userData);

Da ich mich erst vor kurzem in C++ reingearbeitet habe (und aus der Java-Welt komme), steh ich erstmal auf dem Schlauch.
 
Was genau willst du damit erreichen? Für mich sieht das etwas krude aus. Parameter einer Funktion sind imho immer Datentypen, also keine Funktionen. Du kannst Methoden verwenden, um deren Rückgabetyp an eine Funktion zurückzugeben. Das war aber auch bei Java schon so.

Der Compiler moniert das zu recht, denn den Datentypen stepCallback gibt es aber nicht als Klassenvariable in dieser Klasse.

Technisch geht folgendes:
Code:
class Fooclass
{
int foo();
void bar(int myVar);
}

Fooclass myfoo = new Fooclass();
myfoo->bar(myfoo->foo());

Funktionen sind keine Datenstrukturen sondern stehen nur in einer dem Objekt anhängigen Liste..
 
@Reimer: Du hast heute Nacht gerade mal drei Minuten gewartet, bis Du diese Frage in einem anderen Forum gecrosspostet hast.

Hättest Du nicht mal warten können, bis wir morgens Tee getrunken haben und die Foren auf neue Beiträge prüfen?

Crossposts sind böse.

Alex
 
@below: notiert. Kommt nicht mehr vor, aber macuser-Leser lesen nicht zwingend das osxentwickler-Forum oder sind beide Foren miteinander gekoppelt? Lass mich eines besseren belehren ;-)

@_ebm_: Der angegebene Code funktioniert, das ist korrekt. stepCallback dürfte nicht mehr static sein. Da ich ohnehin noch nie mit Funktionen als Parameter gearbeitet habe, werde ich da mal diverse Varianten ausprobieren müssen.

Nachtrag:
Die jeweils 2 gruppierten Zeilen stehen jeweils in unterschiedlichen Definitionen bzw. in deren Implementierungen. Ich wollte den Beitrag nicht unnötig aufblähen lassen.
 
Zuletzt bearbeitet:
Dir gehts also um Callback-Functions und Function-Pointer?
 
Zuletzt bearbeitet:
@below: notiert. Kommt nicht mehr vor, aber macuser-Leser lesen nicht zwingend das osxentwickler-Forum oder sind beide Foren miteinander gekoppelt? Lass mich eines besseren belehren ;-)

Ganz offensichtlich ist die Gruppe größer als Null.

Alex
 
wollte mal wissen, wie ich ne Member-Funktion als Parameter übergebe?

Naben,

hab jetzt von C++ kaum Ahnung, aber wenn es mit Funktionpointern nicht klappt, probier es doch mal den OOP-Weg.

Javamäßiger Code:
Code:
public class CycleCallback {

    public void callbackCaller(CycleCallback callback) {
        // ...
        callback.callbackCaller(this);
        // ...
    }

}

Prost.
 
Zurück
Oben Unten