Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Funktionenzeiger zurückgeben

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
07.12.2006, 14:27 Uhr
Soto



Hallo,
kurze Frage:

Eine Funktion f soll einen Pointer auf eine Funktion int g(int) zurückliefern.
Muss ich dann den Rückgabewert von f als void* angeben, oder gibts auch ne Möglichkeit dass ich konkreter festlegen kann was mir f zurückliefert?
--
ich versuche zu helfen, sorry wenn ich nen scheiß rede ^^
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
07.12.2006, 14:34 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


Erklär mal was du inhaltlich machen willst. einen zeiger einer Funktion zurückgeben macht imho wenig sinn. wenn dann übergibt man eine funktion einer anderen funktion...
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
07.12.2006, 14:48 Uhr
0xdeadbeef
Gott
(Operator)


Roh ist die Syntax sehr wild, ich würde also nen typedef empfehlen:

C++:
int g(int x) { /* ... */ }

typedef int(*func_type)(int);

func_type f(void) {
  return g;
}


Wenns unbedingt ohne gehen soll, dann geht das, glaub ich, so:

C++:
int g(int x) { /* ... */ }

int (*f(void))(int) {
  return g;
}


--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra

Dieser Post wurde am 07.12.2006 um 14:50 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
07.12.2006, 14:57 Uhr
Soto



@windalf: damit kannst du recht haben, ich werds nochmal überdenken

@0xdeadbeef: funktioniert beides einwandfrei, besten dank!
--
ich versuche zu helfen, sorry wenn ich nen scheiß rede ^^
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
07.12.2006, 15:05 Uhr
0xdeadbeef
Gott
(Operator)


@windalf:

C++:
#include <signal.h>

void (*signal(int signum, void (*handler)(int)))(int);


...ANSI-C signal handling. Zurückgegeben wird der vorherige signal-handler.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra

Dieser Post wurde am 07.12.2006 um 15:05 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
07.12.2006, 15:15 Uhr
Guybrush Threepwood
Gefürchteter Pirat
(Operator)



Zitat von Windalf:
einen zeiger einer Funktion zurückgeben macht imho wenig sinn.

wieso? mir fallen da schon ein paar anwendungsbeispiele ein. Zum Beispiel eine Funktion alla GetProcAdress aus der Windows Api um Funktionen aus Dlls zu laden. Oder eine allgemeine gültige Funktion die anhand verschiedener Kriterien eine bestimmte Funktion zurückliefert so das man diese Entscheidung nicht immer wieder programmieren muss und immer einen Zeiger auf die richtige Funktion hat...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
07.12.2006, 15:26 Uhr
Blubber2063



Nebenbei Windalf du hast doch an der TU Info Studiert oder tust es noch, da sollten dir doch Funktionale Sprachen ein Begriff sein und wozu man das so verwenden kann. Nebenbei zum Beispiel um eine numerische Integration durchzuführen.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
07.12.2006, 17:28 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


@Blubber2063
Ja richtig opal hasse ich
numerisch integrieren würde ich z.B. so...

C++:
double trapez_integr(double u,double o,int s,double(*f)(double)){
double i=0,r=0,d=(o-u)/--s;
    while(i<s) r+=d/2*(f(u+i*d)+f(++i*d+u));
return r;}


Es ist ja richtig, dass es Sinn machen kann. Ich meinte damit eher wenn ich mir so die vorherigen Fragen des Fragenstellers angeguckt habe, das er wohl kaum danach wirklich sucht, sondern vermutlich etwas anderes machen will...
--
...fleißig wie zwei Weißbrote

Dieser Post wurde am 07.12.2006 um 17:29 Uhr von Windalf editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
07.12.2006, 17:32 Uhr
J-jayz-Z
Perl Crack ala Carte
(Operator)


Oh Gott ist das häßlich ...
--
perl -Mstrict -Mwarnings -e 'package blub; sub new { bless {} } sub bar {my $self=shift; $self->{bla}="66756e2d736f66742e6465"; return $self->{bla};} my $foo=blub->new();print "Hallo ";print pack("H*",$foo->bar()); print "\n"'
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
07.12.2006, 18:00 Uhr
Blubber2063



Naja das hassen ist so ne Sache, aber so richtig mögen tue ichs auch nicht, hab überhaupt keine Lust den My Opal Compiler in Opal zu schreiben, aber mann muss ja leider .
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: