Default Paramteter für QList

Alles rund um die Programmierung mit Qt
Antworten
Rumbert
Beiträge: 48
Registriert: 25. Mai 2009 18:28
Wohnort: Witten

Default Paramteter für QList

Beitrag von Rumbert »

Hallo,

ich würde gerne einer Methode einen Default parameter übergeben.

Code: Alles auswählen

void test(QString name = "leer", QList <QImage> imgList = ??? );
Die Liste soll ein Image aus einer Resource enthalten

Code: Alles auswählen

QImage(QString::fromUtf8(":/frame/images/default.png")) ); 
aber irgendwie bekommeich die Liste nicht initialisiert.
Kann mir jemand ein Tip geben?

Grüße André
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Sowas geht nicht - zumindest nicht so wie du es Dir vorstellst.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
kater
Beiträge: 306
Registriert: 29. Dezember 2009 01:13
Wohnort: Darmstadt

Beitrag von kater »

Mit Pointer ist es möglich wird aber eklig. Also als 2. Arguemnt ein Pointer auf QList der per default NULL ist.
Dann testest du ob er NULL ist. Wenn ja erstellst du eine neue Liste und fuegst dein Bild hinzu, wenn nicht arbeitest einfach mit der übergebenen Liste.
Beim beenden der Funktion musst du deine evtl. erstellte Liste wieder löschen aber nur wenn der Pointer vorher NULL war, also keine Liste übergeben wurde.

Also ist nicht so das wahre.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Eine leere Liste als Object bzw. Referenz geht auch. Aber keine schon vorinitialisierte.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
AuE
Beiträge: 918
Registriert: 5. August 2008 10:58

Beitrag von AuE »

Es sei denn du baust dir was eigenes ;-) Dann kannst dir nen Ctor so basteln wie ihn haben magst
archer
Beiträge: 306
Registriert: 2. Februar 2006 09:56

Beitrag von archer »

Es geht, meine ich auch, indirekt mit einer vorinitialisierten Liste.

Im Header, z.B: unter private eine statische Methode anlegen

Code: Alles auswählen

static QList<QImage> defaultList();
dann in der cpp

Code: Alles auswählen

QList<QImage> MyClass::defaultList()
{
    QList<QImage> list;
    list << QImage(QString::fromUtf8(":/frame/images/default.png"));
    return list;
}
dann könnte man soewas machen

Code: Alles auswählen

void test(QList<QImage> list = defaultList());
Ist allerdings nicht getestet und vielleicht auch nicht schön...
RHBaum
Beiträge: 1436
Registriert: 17. Juni 2005 09:58

Beitrag von RHBaum »

Ist allerdings nicht getestet und vielleicht auch nicht schön...
Im Gegenteil ich find das absolut "schoen"
Ich verwend das recht haeufig, das ich ich static methoden hab, nur um zeugs in die initialisierungsliste zu bekommen.

Ich find die Alternativen wesentlich unschoener

Ciao ...
Rumbert
Beiträge: 48
Registriert: 25. Mai 2009 18:28
Wohnort: Witten

[gelöst] Default Paramteter für QList

Beitrag von Rumbert »

Vielen Dank für die zahlreichen Anregungen!
Fürs erste habe ich das mittels Pointer gelöst, wenn Zeit ist werde ich es evtl. auf die Version mit der Static-Methode umbauen.

Grüße André
Antworten