qt4: copy constructor?

Alles rund um die Programmierung mit Qt
Antworten
arne.anka
Beiträge: 32
Registriert: 28. Dezember 2005 14:06

qt4: copy constructor?

Beitrag von arne.anka »

ich habe eine klasse von qlabel abgeleitet und davon eine instanz.
da stehen etliche infos drin (farbe, grösse, position ...).
jetzt möchte ich davon eine exakte kopie erzeugen, indem ich einen konstruktor verwende.

der "normale" konstruktor sieht so aus:

Code: Alles auswählen

MyWidget::MyWidget(QWidget * parent, QString name):QLabel(parent) 
der copy-constructor sollte etwa so aussehen:

Code: Alles auswählen

MyWidget::MyWidget(MoveWidget *source)
wie stelle ich es nun an? bei java würde ich halt

Code: Alles auswählen

super(parent, name)
machen,

Code: Alles auswählen

MoveWidget(source->parentWidget(), source->accessibleName());
führt jedoch nicht zum erfolg.
uhu01
Beiträge: 150
Registriert: 10. Juli 2005 20:46

Beitrag von uhu01 »

Hy!

Der Copy constructor sollte so aussehen:

Code: Alles auswählen

MyWidget::MyWidget(MoveWidget& source)
du kannst Variablen, Basisklassen wie vom normalen Konstructor gewohnt hinter einen ":" schreiben, im Konstructor ( zwischen { und }) kopierst du dann die Daten wie es für die Daten notwendig ist. ( bei pointern Speicherbereich allokieren und Daten kopieren, etc.).
Du hast Zugriff auf die Member des neuen Objekts (eh klar) und auch zugriff auf das zu kopierende Objekt (da beide diesselbe Klasse).
Hinter dem ":" kannst du übrigens auch copy-constructors verwenden, sollten diese Implementiert sein.

EDIT: natürlich muss es in C++ MyWidget& heißen, hatte das übersehen, nur gesehen das ein Pointer statt einer Referenz verwendet wird. Danke an Christian81 für den Hinweis.

mfg
uhu01
Zuletzt geändert von uhu01 am 15. Januar 2006 16:07, insgesamt 2-mal geändert.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

uhu01 hat geschrieben:Hy!

Der Copy constructor sollte so aussehen:

Code: Alles auswählen

MyWidget::MyWidget(MoveWidget& source)
Wohl eher so:

Code: Alles auswählen

MyWidget::MyWidget(MyWidget& source)
Aber es hat wohl keinen Zweck - er lässt sich nicht belehren wie ich auf qt-interest gesehen habe...

http://www.volkard.de/vcppkold/copykonstruktor.html
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
arne.anka
Beiträge: 32
Registriert: 28. Dezember 2005 14:06

Beitrag von arne.anka »

Christian81 hat geschrieben:Aber es hat wohl keinen Zweck - er lässt sich nicht belehren wie ich auf qt-interest gesehen habe...
war das jetzt nur eine stillosigkeit oder direkt unverschämt?
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

arne.anka hat geschrieben:
Christian81 hat geschrieben:Aber es hat wohl keinen Zweck - er lässt sich nicht belehren wie ich auf qt-interest gesehen habe...
war das jetzt nur eine stillosigkeit oder direkt unverschämt?
War vielleicht etwas hart ausgedrückt, aber ich finde Du bist etwas hinweisresistent - zumindest manchmal. Habe Dich ja auch schon auf qt-interest gesehen. Alles muss so sein wie in Java - was anderes gilt nicht. Dabei vergisst du das C++ *nicht* Java ist.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
arne.anka
Beiträge: 32
Registriert: 28. Dezember 2005 14:06

Beitrag von arne.anka »

Christian81 hat geschrieben:Alles muss so sein wie in Java - was anderes gilt nicht. Dabei vergisst du das C++ *nicht* Java ist.
das ist plattester unfug.
ich habe darauf hingwiesen, dass ich c++ anfänger bin und auf das java-äquivalent verwiesen, um zu verdeutlichen, was ich meine.
nach meinem dafürhalten ist erst im dritten oder vierten posting überhaupt auf das problem eingegenagen worden (nämlich, dass es das so unter c++ nicht gibt, während die ersten an meiner anfrage vorbei operiert haben).

ich wäre dankbar, wenn du solche persönlichen werturteile unterlassen würdest. du kennst mich nicht und kannst mich kaum nach den posts einschätzen -- nicht zuletzt das zitat belegt eindrücklich, dass das, was ich schreibe und das, was du liest, zwei grundverschieden dinge sein können.
Antworten