[solved] operator << für abstrakte basisklasse
-
hi!
ich hab folgendes problem: ich hab eine abstrakte basisklasse, für die ich den << operator überladen habe. wenn ich nun davon abgeleitete klassen auf den outstream schreiben möcht, kommt folgende fehlermeldung vom vs:
Error 2 error C2243: 'type cast' : conversion from 'Rect *__w64 ' to 'Figure &' exists, but is inaccessible c:\prog\test\templatetest\main.cpp 16
der code schaut so aus:
class Figure { public: // ... virtual string& ToString() = 0; friend ostream& operator << ( ostream& outstream, Figure& f ); }; class Rect : Figure { public: // ... string& ToString(); }; string& Rect::ToString() { return string( "rect" ); } int main( char **argv, int args ) { Rect r( 5, 2 ); cout << r; }was is falsch bzw. warum geht das nicht, oder is das so garnet möglich? ich muss doch net etwa für jede klasse den operator << neu überladen wenn der immer das selbe macht?
danke schonmal!
-
Du musst die Vererbung öffentlich machen:
class Rect : public FigureAnsonsten werden die public-Elemente aus Figure als private in Rect übernommen und werden somit von außen nicht aufrufbar.
-
achgott, grad hab ichs rausgefunden. DANKE! wenn ma vo c# wieder auf c++ zurückwechselt versteht ma manchmal die welt nimmer
