Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Nach Umstellung auf Class eine Fehler mit Funktion als Parameter

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
06.11.2006, 10:38 Uhr
FunnyDingo



Hallo zusammen,

ich glaube der Titel passt nicht so ganz, aber ich weiß nicht wie ich es besser beschreiben soll. Ich habe gestern angefangen, Teile meines Programmcodes auf Klassen umzustellen. Nun habe ich eine Funktion, deren erster Parameter eine Funktion ist:

C++:
bool create(void*(*)(void*), const std::string &);

Bisher habe ich den Aufruf immer mit "dispatcher::dispatch" als ersten Paremeter durchgeführt. Nun habe ich den Dispatcher aber als Klasse definiert und machen nun:

C++:
dispatcher *dp = new dispatcher;
create(dp->dispatcher, "dispatcher);

Leider kopiliert das ganze nicht mehr:

Zitat:
error: no matching function for call to ‘create(<unresolved overloaded function type>, const char [11])’

Ich habe schon einiges ausprobiert wie &dp->dispatcher oder dispatcher::dispatch, aber nichts funktioniert.

Hat jemand eine Idee warum?

lg,
Funny
--
"Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral." (John James Osborne)

Meine Website: http://www.funnydingo.de
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
06.11.2006, 10:56 Uhr
Th



Funktionszeiger und Klassenmethodenzeiger sind etwas verschiedenes.
Entweder du deklarierst deine Klassenmethode statisch oder aber du änderst den Funktionszeiger in
C++:
void* (Dispatcher::*)(void*)
.
Aufruf dann mit

C++:
dispatcher *dp = new dispatcher;
create(&dp->dispatcher, "dispatcher");

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
06.11.2006, 11:50 Uhr
FunnyDingo



Statische Klassenmethoden kenne ich noch nicht, aber ein kurzer Blick bei google hat mir den Eindruck vermittelt, dass dies einige Probleme mit sich ziehen könnte.

Die zweite Variante sieht ziemlich gut aus, aber kommt für mich leider nicht in Frage, da ich Methoden aus verschiedenen Klassen übergeben muss. In diesem Fall müsste ich ja für jede Mögliche Klasse die create() neu schreiben.

Ich werde mir die statischen Klassenmethoden einfach nochmal genau ansehen - vielleicht ist dies ja doch die richtige Wahl. Ansonsten werde ich bei den einfachen Funktionen in verschiedenen Namespaces bleiben müssen.
--
"Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral." (John James Osborne)

Meine Website: http://www.funnydingo.de
 
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: