Hm ich habe da immer noch ein Problem :/
Code: Alles auswählen
int StiffenerPtrList::compareItems(QPtrCollection::Item item1, QPtrCollection::Item item2)
Wie soll ich dort eine vernünftige Implementierung machen? Ich bekomme doch nur zwei Adressen und kann damit nicht auf meine Objekte zugreifen.
Die PtrList besteht ja aus Pointern zu den von mir erstellten Objekten. Wenn ich nun die Methode "compareItems" überschreiben will, sind die Items doch Pointer auf meine Objekte, oder?
Liste.h
Code: Alles auswählen
#include <qptrlist.h>
#include "MyClass.h"
class MyClassPtrList : public QPtrList<MyClass>
{
public:
MyClassPtrList();
protected:
virtual int compareItems( QPtrCollection::Item, QPtrCollection::Item );
};
Die cpp
Code: Alles auswählen
#include "MyClassPtrList.h"
MyClassPtrList::MyClassPtrList()
{}
int MyClassPtrList::compareItems(QPtrCollection::Item item1, QPtrCollection::Item item2)
{
double l1= item1->Length();
double l2= item2->Length();
return 0;
}
MyClass.h
Code: Alles auswählen
#include <qobject.h>
class MyClass: public QObject
{
Q_OBJECT
public:
MyClass( QObject* parent = 0, const char* name = 0, int number=0);
MyClass(const MyClass&);
MyClass &operator = (const MyClass&);
Length();
private:
double m_length;
void calculateLength();
;
(Die Klassen sind zusammengekürzt)
Ich hatte auch versucht die Zeiger, von der compare Methode internen Zeigern zuzuweisen, aber auch das funktioniert nicht.
Die Items scheinen *void zu sein (?)