PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : C/C++: Funktionspointer als Rückgabewert einer Fkt.?



ContainerDriver
07-08-2004, 21:32
Hi Leute,
ich habe ein kleines Problem: und zwar habe ich eine Funktion, die einen Funktionspointer zurückliefern soll:


char* (*) (char*,char*)bla(void);

. Allerdings ist wohl die Syntax nicht ganz korrekt, denn es geht nicht zu kompilieren:


blablabla: error: parse error before `)' token

. Wie muss die richtige Definition der Funktion bla lauten, damit sie den gewünschten Funktionspointer vom Typ


char* (*) (char*,char*)

zurückgibt (1)?

Ich habe mir vorläufig damit geholfen, dass bla void* zurückliefert und ich später den Rückgabewert zu char*(*)(char*,char*)
konvertiere. Ist das eigentlich schlechter Stil, gehen da irgendwelche Informationen verloren, kann das zu Problemen führen (2)?

Über eine Beantwortung meiner Fragen 1 + 2 würde ich mich sehr freuen,

Gruß, Florian

wraith
07-08-2004, 21:59
Wie muss die richtige Definition der Funktion bla lauten, damit sie den gewünschten Funktionspointer vom Typ


char* (*) (char*,char*)

zurückgibt (1)?

Die Syntax ist etwas ... komisch.


char* (*bla(void))(char*,char*)
{
//....
}
Daher mache das besser über ein typedef


typedef char* (*pFun)(char*,char*);

pFun bar(void)
{
//....
}



Ist das eigentlich schlechter Stil, gehen da irgendwelche Informationen verloren, kann das zu Problemen führen (2)?
Ja,Ja,Ja.

ContainerDriver
08-08-2004, 14:51
Danke, klappt jetzt wunderbar!

Gruß, Florian