Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Unterschied Ponter zwischen Funktion und Methode?

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
28.08.2007, 09:02 Uhr
gorgoyle



Man kann (ich hoffe ich treffe den Syntax) einenen Pointer auf eine Funktion setzen

C++:
void func ();
void* pFunc = func;


Geht das nicht ebenso für Methoden?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
28.08.2007, 09:17 Uhr
mike
Pinguinhüpfer
(Operator)


Du hast ein Objekt mit einer Methode und willst einen Pointer auf die Methode? Oder wie meinst du das?
--
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
28.08.2007, 09:18 Uhr
okraits



http://de.wikipedia.org/wiki/Methodenzeiger
--
www.okraits.de/
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
28.08.2007, 10:04 Uhr
gorgoyle



ich hab eine source die in C geschrieben ist, die eine virtuelle maschine bereitstellt.
diese VM stellt "built-in Functions" zur Verfügung.
Diese Functions sind ebend als C-Functions realisiert und müssen registriert werden.
Als ich die erste Klasse schrieb, die nur eine zu registrierende Funktion enthielt, meckerte der Compiler. Durch Probieren hab ich nicht geschaft, eine Methode wie eine Funktion zu übergeben (also einen Pointer darauf). Darum meine Frage ob es Unterschiede gibt.

Das der Code nicht funktioniert, ohne auf Methoden-Zeiger abgestimmt zu sein, kann ich mir vorstellen, aber als was für einen Typ muß ich den den Methoden-Zeiger deklarieren?

scho mal vielen dank für die bisherigen Antworten..


*edit*
Ich hab eine Klasse, die eine statische Methode zum registrieren der "built-in Function", nun eine Member-Method, vormals eine Funktion.


C++:
stativ void myclass::register_func(someArgs,..., myBuiltinFunc,...,someFlags)



myBuiltinFunc war zuvor eine Funktion und nun ist es eine Methode.
Ich hatte erwartet, daß beide vom Typ void* sind und deshalb der Compiler den Code akzeptiert, auch wenn er dann nicht funzt, weil "dort" keine Instanz zur Verfügung steht, an der man die Methode "anbinden" kann.

Dieser Post wurde am 28.08.2007 um 10:10 Uhr von gorgoyle editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
28.08.2007, 14:33 Uhr
Kest
saint


Hi!


Zitat von gorgoyle:
Das der Code nicht funktioniert, ohne auf Methoden-Zeiger abgestimmt zu sein, kann ich mir vorstellen, aber als was für einen Typ muß ich den den Methoden-Zeiger deklarieren?


C++:
struct A{void foo() const{}};
typedef void (A::*PAF)() const;
PAF myPtr=&A::foo;
A obj1;
(obj1.*myPtr)();
A* obj2=new A();
(obj2->*myPtr)();


Für einfache Funktionen oder statische Methoden:

C++:
void foo(){}    
struct A{static void bla(){}};
typedef void (*PF)();
PF f1=&foo;
f1();
PF f2=&A::bla;
f2();

--
Wenn man einen Hufschlag hört, sollte man >Pferd< denken und nicht >Zebra<.

Dieser Post wurde am 28.08.2007 um 14:35 Uhr von Kest editiert.
 
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: