Linker Error, Funktion mit Pointer auf Funktion, stehe auf dem Schlauch.
-
Hallo,
leider ist mein erster Post gleich ein kleiner Hilferuf, ich habe mir eine Mischung aus C/C++ selbst beigebracht aber irgendwann läuft man so gegen eine Wand...Ich schreibe ein kleines Programm zur Sortierung von Zahlen.
Je nachdem, wie sortiert werden soll, wird an die Funktion "sort" eine andere Funktion übergeben. Und genau da habe ich irgendwo einen Fehler."Linker Error - undefined reference to sort(int (*)(int,int),int,int)"
void sort (int (*func)(int ,int), int *daten, int anzahl) { int i,j,ablage; for (i=0; i<anzahl; i++) for (j=0; j<anzahl ; j++) { if (func(daten[i],daten[j]) == 0) { ablage = daten[i]; daten[i] = daten[j]; daten[j] = ablage; } } }Zum Beispiel wird diese Funktion übergeben:
int aufsteigend (const int a,const int b) { if (a>b) return 1; else return 0; }Die Funktion wird vorher so zugeordnet und aufgerufen:
int (*f) (int,int); f = aufsteigend; int a; cin << a; int* x; x = new int [a]; // rand()%100 auf x... sort(f,*x,a);Hier wäre der ganze Code:
http://docs.google.com/Doc?docid=0Af4O4t58Vu47ZGd6aHA2dHdfMGhuN2twcWR2&hl=enWürde mich freuen wenn mir jemand helfen könnte.
-
void sort (int (*func)(int ,int), int *daten, int anzahl)sort(f,*x,a);Linker Error - undefined reference to sort(int (*)(int,int),int,int)Fällt dir da nichts auf? Was bedeutet wohl das * vor dem x?
-
EDIT:
Zu Spät:D:D
-
oh mann... danke

funktion falsch definiert
-
dak schrieb:
oh mann... danke

funktion falsch definiertDie Funktionsdefinition macht schon Sinn. Nur den Aufruf solltest du nochmal überdenken.
-
Ja klar läuft schon, hab das nur zum testen so (x) geschrieben.
Nur leider hatte ich die Funktion so definiert:
void sort (int ()(int ,int), int, int)
und so deklariert:
void sort (int (*f)(int ,int), int *****daten, int anzahl)