Funktions-Pointer
-
Hi,
meine Basisklasse ist Core::Machine, meine abgeleitete Gui::Machine. Ich brauche in der abgeleiteten Klasse Funktions-Pointer. Die Deklaration innerhalb der Klasse funktioniert auch gut:
void (Machine::*PF)(const TreeItem*, int);Allerdings würde ich gern ein typedef (außerhalb der Klasse Gui::Machine) verwenden:
typedef void (Gui::Machine::*PF)(const Gui::TreeItem*, int);Da beschwert sich verständlicherweise der Kompiler mit:
error: `Gui::Machine' has not been declaredWo muss ich den typedef hinpacken, damit er funktioniert?
Vielen Dank im Voraus
Toru
-
So?
namespace Gui { class Machine; } typedef void (Gui::Machine::*PF)(const Gui::TreeItem*, int);
-
David_pb schrieb:
So?
namespace Gui { class Machine; } typedef void (Gui::Machine::*PF)(const Gui::TreeItem*, int);Thx. Sieht zwar nicht so schön aus, funktioniert aber.
Viele Grüße
Toru
-
Toru schrieb:
David_pb schrieb:
So?
namespace Gui { class Machine; } typedef void (Gui::Machine::*PF)(const Gui::TreeItem*, int);Thx. Sieht zwar nicht so schön aus, funktioniert aber.
Viele Grüße
Toru
Das ist normale Vorgehensweise bei Funktions/Elementzeiger. Die unschöne Syntax überdeckst du ja mit dem typedef und es sieht sonst überall gut aus.

-
drakon schrieb:
Toru schrieb:
David_pb schrieb:
So?
namespace Gui { class Machine; } typedef void (Gui::Machine::*PF)(const Gui::TreeItem*, int);Thx. Sieht zwar nicht so schön aus, funktioniert aber.
Viele Grüße
Toru
Das ist normale Vorgehensweise bei Funktions/Elementzeiger. Die unschöne Syntax überdeckst du ja mit dem typedef und es sieht sonst überall gut aus.

Ich meinte nicht das typedef als unschön, sondern das Bekanntmachen der Klasse Gui::Machine. Aber wie gesagt, das "Aussehen" spielt hier wirklich keine Rolle.
-
-.-'
Ahh,nix für ungut, nicht das ganze gelesen.