Ich habe einen QList vom Typ PrintableObject*
wie:C++ QT Casting zu Kind-Klassen für Elemente in einem QList
QList<PrintableObject*> drawables;
Diese Liste enthält Objekte vom Typ PrintableX
die Subklassen von PrintableObject
sind eingefügt wie:
drawables += &PrintableLine(x, y, x2, y2);
Danach verwende ich die Liste eine Schleife, wo ich den tatsächlichen Typ bestimmen, einen Cast machen und versuchen, es zu verwenden:
foreach(PrintableObject* drawable, drawables){
if(drawable->myClassName == "PrintableLine") {
PrintableLine* line = (PrintableLine*) drawable;
painter.drawLine(line->x, line->y, line->x2, line->y2);
} else if (drawable->myClassName == "PrintableString") {
PrintableString* string = (PrintableString*) drawable;
font.setPointSize(string->fontSize);
painter.setFont(font);
painter.drawText(string->x, string->y, string->width, string->height, Qt::AlignHCenter | Qt::AlignTop, string->string "if I say?");
}
}
Ausgenommen, wenn ich versuche, mein neues glänzendes heruntergekommenes Objekt zu benutzen, mache ich einen Segmentierungsfehler ...
Irgendwelche Vorschläge?
Dank Kerl, du hast mein Leben gerettet! Ich bin kein C++ Programmierer, muss es aber trotzdem machen. Wie für RTTI weiß ich, dass das eine schlechte Sache ist, aber manchmal müssen wir alle etwas stinkenden Code schreiben :) – Zhigalin
@Zhigalin Glücklich, sein Leben zu retten :-) Anmerkung: sicher sein, das Objekt zu löschen, das Sie zuweisen. –