Funktionspointer in Strukturen - wozu?

15/05/2009 - 13:10 von Uwe Riedmann | Report spam
Hallo

Schon des oefteren ist mir ein Codekonstrukt untergekommen, welches
in einer Struktur einen Funktionspointer definiert (Beispiel als
Anhang). Mich wuerde nun interessieren, wann ein solches Kontrukt
eingestzt werden soll. Schaut fuer mich wie ein Versuch von OO
Programmieren in C aus, in dem "members and methods" in einer Struktur
gruppiert werden. Sehe ich das richtig, oder steckt da noch was anderes
dahinter?

Danke


#include <stdio.h>
#include <stdlib.h>

typedef long fooPtr(char *);
typedef struct
{
fooPtr *func;
long cnt;
} MyStruct;
/******************************************************************************/
long func(char * str)
{
printf("%s", str);
return -1;
}
/******************************************************************************/
int main(void)
{
long l = 0;
MyStruct *ex = malloc(sizeof *ex);
if ( ex != NULL )
{
ex->func = func;
ex->cnt = 99;
l = ex->func("Hello"); // crashes here
free(ex);
}
return 0;
}
 

Lesen sie die antworten

#1 Rainer Weikusat
15/05/2009 - 14:52 | Warnen spam
Uwe Riedmann writes:
Schon des oefteren ist mir ein Codekonstrukt untergekommen, welches
in einer Struktur einen Funktionspointer definiert (Beispiel als
Anhang). Mich wuerde nun interessieren, wann ein solches Kontrukt
eingestzt werden soll. Schaut fuer mich wie ein Versuch von OO
Programmieren in C aus,



Es ist eigentlich eher umgekehrt: Das, was man gaenigerweise unter
'OO-Programmieren' versteht, dh Klassen mit dazugehoerigen virtuellen
Methoden, ist ein etwas einfacherer Spezialfall der Dinge, die man mit
Funktionszeigern tun kann. Vereinfacht zB deswegen, weil die Werte der
mit virtuellen Methoden korrespondierenden Funktionzeigern zum
Uebersetzungzeitpunkt bekannt sind und sich waehrend der Laufzeit
eines Programmes nicht aendern.

Ähnliche fragen