Ich habe eine Reihe von Beispielen gesehen, wie man einen Funktionszeiger auf ein C++ - Klasse nicht-statisches Element einer spezifischen-Klasse setzt. Allerdings würde ich für solche Zeiger verwenden, die für jede Typklasse funktionieren würden. Um die Idee zu demonstrieren, schrieb ich ein Pseudo-Beispiel:C++ - Funktionszeiger auf eine nicht statische Elementfunktion einer beliebigen Klassenart
class A
{
public:
A(){} //constructor
void callMe() { /* do something */ }
};
class B
{
public:
B(){} //constructor
void callMe() { /* do something */ }
};
main()
{
A aa;
B bb;
//pseudo part:
generic_method_pointer_type p; //how to define the type of p?
p=HOWTO;//set pointer p to point to A::callMe. How to do?
p(aa); //A::callMe on instance aa gets called
p=HOWTO;//set pointer p to point to B::callMe. How to do?
p(bb); //B::callMe on instance bb gets called
}
Sieht dies möglich?
Ich weiß, C++ 11 hat neue Tricks wie Std :: Funktion dafür. Ich habe einige Experimente an der std :: function durchgeführt und fand es zu langsam für eine Echtzeit-App, die auf einem kleinen Mikrocontroller läuft. Aus diesem Grund würde ich direkt hart codierte Zeiger bevorzugen, die minimalen Overhead verursachen würden.
Vielen Dank für Ihren Hinweis!
Haben Sie die Beiträge unter den von Ihnen angegebenen Tags gelesen, insbesondere unter den Member-Function-Pointers? –
Hat ein paar Stunden im Netz gesucht. Wenn Sie einen Link zu einer Antwort kennen, würde ich das schätzen. – TeroK
Was erwarten Sie, wenn Sie 'p = & A :: callMe;' einstellen und dann 'p (bb);'? – aschepler