Hi, hab wieder mal ne Frage
Also ich hab eine Liste von Klassen, die natürlich alle gleich sind, wo aber jede eine andere "Tochter"-Klasse von aKlasse enthalten soll.
Die Klassen aus der Liste können diese Tochter-Klassen dann also ganz einfach als aKlasse behandeln, aber jetzt kommt dass Problem mit der Konvertierung.
Soweit ich weiß, kann ich eine Methode in der Tochter-Klasse, die es in aKlasse nicht gibt, von den Listen-Klassen nicht benutzen, da es für sie ein Objekt der aKlasse ist. Es sollen trotzdem alle eine andere Funktion update() enthalten, also definiere ich diese Methode schon in der aKlasse, und überlade (heißt das so?) sie dann in jeder Tochter-Klasse.
Meine Frage ist jetzt, ob, wenn ein Objekt einer Tochter-Klasse als aKlasse bekannt, beim ausführen überladener Methoden die alte Mehode aus aKlasse, oder die neue, überladene, Methode ausgeführt wird.
(Ansonsten könnte ich versuchen dass ganze über Sinals und Slots zu regeln, wobei connect() in den Tochter-Klassen ausgeführt wird, da nur diese wissen von welchem Typ sie sind, aber eigentlich hab ich es nicht vor.)
EDIT:
Hm, der Text ist unlogisch. Wenn alles was ich gesagt hab stimmt, dann geht es logisch nicht. Also gehe ich mal davon aus, dass mein Text nen Fehler hat
Um die Situation noch genauer zu beschreiben ein bisschen code:
Die Klasse, die in der Liste verwendet wird:
Code:
class Item
{
private:
Item( aKlasse obj );
~Item();
aKlasse* objekt;
// Der Rest ist unwichtig...
};
Methode(n) der Klasse:
Code:
Item::Item( aKlasse obj )
{
objekt = obj;
objekt->update();
// Und weiteres...
}
Und hier wird ein Item der Liste angefügt:
Code:
void neFunktion()
{
list = new QPtrList<Item>;
list->append( new Item( new aKlassenTochterEins ) );
list->append( new Item( new aKlassenTochterZwei ) );
list->append( new Item( new aKlassenTochterDrei ) );
// und so weiter
}
Hoffe mal das reicht
Die Methode update() aus den aKlassenTöchtern benutzt Variablen, die nur die Klassen selber enhalten, also wenn die Methode in aKlasse ausgeführt würde, gäbe es ein paar nicht existierende Variablen, deshalb ist mein Text unlogisch.
Also ne neue Frage:
Wird im Konstruktor von Item die Methode aKlasse::update(), oder die Methode aKlassenTochter::update() ausgeführt?
Lesezeichen