Globalen Operator für die Basisklasse aufrufen
-
Ich komme mir irgendwie blöd vor mit dieser grundlegenden Frage, aber ich finde einfach die Lösung nicht. Weder in meinen Büchern, noch in meinem Kopf, daher frage ich mal euch.
class A { public: friend std::istream& operator >>(std::istream&, A&); }; std::istream& operator >>(std::istream& i, A& a) { // ... return i; } class B : public A { public: friend std::istream& operator >>(std::istream&, B&); }; std::istream& operator >>(std::istream& i, B& b) { // ... // Wie "std::istream& operator >>(std::istream&, A&)" aufrufen? return i; }Der Code sagt es eigentlich schon. Wie kann ich den anderen globalen Operator aufrufen, bzw. halt den für die Basisklasse? Geht das nur so:
std::istream& operator >>(std::istream& i, B& b) { // ... A& a = b; return i >> a; }Kann doch nicht sein ...
Danke für die Hilfe.
Grüssli
-
Natürlich geht sowas:
i >> *((A*)&b);aber das geht sicher auch schicker.
Ich würde da ja eher eine extra Funktion schreiben die sich darum kümmert das die richtigen Operatoren ausgeführt werden.
-
Bitte.
i >> static_cast< A& >( b );
-
Gefällt mir irgendwie alles nicht, ich lös das wohl besser anders. Danke für die Hilfe.
Grüssli