Nowendigkeit und Aufwand? von cast!
-
Wenn du nur mit den (virtuellen) Methoden der Basisklasse auf die Daten zugreifen kannst/musst, kannst du die Basisklasse verwenden. Wenn du gezwungen bist, die Objekte als A oder B (oder was auch immer) zu verwenden, solltest du sie auch als A speichern, da ist so ein Cast nur fehleranfällig (irgendwann packst du ein Objekt in die list<>, das nicht zu dem vorgegebenen Anordnungsmuster passt - und dann fliegt dir dein PRogramm um die Ohren).
-
du meinst wenn ich die basis variabeln der basisklasse über virtualle methodne zugreifbar mach, ist theoritsch kein cast notwenig, weil dann über polymorphe gearbeiten werden kann...!?
-
Ja, so sieht's aus (wobei dann noch die Frage im Raum steht, ob A und B ähnlich genug sind, um über ein gemeinsames Interface angesprochen werden zu können).
-
BorisDieKlinge schrieb:
Habe eine Datenklasse welche die Basis- Klasse enthält, und zwei Managment klassen welche einmal die Klassen bspw. A und B verwenden und von mir aus C und D verwenden welche jeweils von Basis abgeleitet sind...
die Managmentklassen legen ihre Objekt A,B bzw. C,D in unterschiedlich defineriten muster an, aber verwenden trozdem die gleiche datenklasse.....

Sorry, kannst Du das mal kurz als Source skizzieren ?Gruß,
Simon2.
-
noch mal ne andere Frage:
A o; Basis *x= &o; A *p= static_cast<A*> (&(*x)); //geht A *p= static_cast<A*> &(*x)); //geht nichwieso?
-
Da fehlt 'ne Klammer, darum geht's nicht. (wobei man sich über den Sinn dieser Konstruktion streiten könnte)
-
sorry die rechte klammer müsste man noch weg machen..
nein ich meine das "&" auch eingeklammert werden muss damit es geht!!
-
Ja, bei den C++ Casts muss der gesamte betrachtete Ausdruck in Klammern gesetzt werden.
-
Was in sofern erklärbar ist, das es sich bei dem Cast um eine Funktion handelt...
cu André
-
ahh..... stimmt.. das erklärt alles