sschlarb
03-10-2004, 12:53
Hallo,
ich habe Schwierigkeiten mit dem Einsatz von QPtrList und QValueList.
In den unten stehenden Code-Ausschnitten verwende ich jeweils einen Value-basierten und einen Pointer-basierten Container.
Die Klasse MyObject ist von MyObjectParent abgeleitet, in der die Methode virtual void toString(); deklariert ist.
In der Klasse MyObject ist die Methode void toString(); auch deklariert, so dass sie wegen der virtual-Deklaration bevorzugt werden müsste.
Aber während in Beispiel 1 für mich erwartungsgemäß
MyObject::toString();
aufgerufen wird,
verwendet Beispiel 2 trotz der virtual-Deklaration
MyObjectParent::toString();
Hat jemand eine Idee, warum?
Beispiel 1:
QPtrList<MyObject> list;
list.append(new MyObject());
textDisplay->append((list.first())->toString());
Beispiel 2:
QValueList<MyObject> setList;
setList.append(MyObject());
textDisplay->append((setList.first()).toString());
ich habe Schwierigkeiten mit dem Einsatz von QPtrList und QValueList.
In den unten stehenden Code-Ausschnitten verwende ich jeweils einen Value-basierten und einen Pointer-basierten Container.
Die Klasse MyObject ist von MyObjectParent abgeleitet, in der die Methode virtual void toString(); deklariert ist.
In der Klasse MyObject ist die Methode void toString(); auch deklariert, so dass sie wegen der virtual-Deklaration bevorzugt werden müsste.
Aber während in Beispiel 1 für mich erwartungsgemäß
MyObject::toString();
aufgerufen wird,
verwendet Beispiel 2 trotz der virtual-Deklaration
MyObjectParent::toString();
Hat jemand eine Idee, warum?
Beispiel 1:
QPtrList<MyObject> list;
list.append(new MyObject());
textDisplay->append((list.first())->toString());
Beispiel 2:
QValueList<MyObject> setList;
setList.append(MyObject());
textDisplay->append((setList.first()).toString());