Zuweisung eines Funktionspointers
-
Das ist ein Code, den ich übernommen habe. Muss ihn zum Laufen kriegen. An der Struktur darf ich nichts ändern.
-
das macht so keinen Sinn.
Du musst die interne class noch initiieren new class()
-
Das geht prinzipiell nicht mit direkten Funktionszeigern.
InnereKlasse::foonimmt nur Zeiger auf freie Funktionen oder statische Klassenfunktionen entgegen,InnereKlasse::sumist aber eine Funktion der KlasseInnereKlasse, die für den Aufruf eine Instanz der KlasseInnereKlassebenötigt. Diese Instanz kannst du aber nicht implizit übergeben, da musste dir was einfallen lassen.
-
Ok. Danke.
-
Singleton design pattern zb
-
Aber skared hat schon recht...
WAS willst eigentlich erreichen? Und wer hat dir diesen Quelltext vermacht, kann derjenige dir nicht erklären, was er sich bei diesem merkwürdigen Konstrukt gedacht hat?
-
Bei mir lässt sich es sich so übersetzen.
class aK { class iK { int (aK::iK::* foo) (const int, const int); int sum(int a, int b) { return a + b; } public: bool init(int, int); }; }; bool aK::iK::init([[maybe_unused]] int x,[[maybe_unused]] int y) { aK::iK::foo = &aK::iK::sum; return true; }
-
@john-0
Mag ja sein, aber OP darf die Struktur nicht verändern, damit ist und bleibtfooein Zeiger auf eine freie oder statische Klassenfunktion.
-
Dann bleibt nichts anderes übrig, eine freie Funktion als Wrapper zu nutzen, oder man fängt an wild mit
reinterpret_casteinzuschlagen, und darauf zu hoffen, dass der Compiler kein Problem damit hat.Nachtrag: Da eine Member Function einen impliziten
thisPointer übergeben bekommt, dürfte der Cast zum Crash führen. Und ich bin mir nicht sicher, ob man eine Static Member Function statt einer freien Funktion nutzen kann. Als C Callback kann man keine Static Member Function nutzen.
-
Ich glaube, ich kündige...
-
@asd1 sagte in Zuweisung eines Funktionspointers:
int sum(int a, int b) { return a + b; }Schreib da einfach
staticvorn dran.
-
Ok. Danke!
-
@asd1 sagte in Zuweisung eines Funktionspointers:
Ok. Danke!
Häh? Ich dachte, du darfst nichts ändern?
-
Naja, was genau "die Struktur" ist, an der nichts geändert werden darf, wurde nicht erklärt.