vererbungsproblem

Alles rund um die Programmierung mit Qt
Antworten
darmstadt
Beiträge: 46
Registriert: 18. April 2006 09:33

vererbungsproblem

Beitrag von darmstadt »

Ich habe folgende Klassen:

//class BaumElement
BaumElement::BaumElement(Datei* _datei) : QTreeWidgetItem(){
this->dateiZeiger = _datei;
...
}

//Class Datei
Datei::Datei(char* _url){
this->url = _url;
...
}

//CLass DateiErgzusbin
DateiErgzusBin::DateiErgzusBin(char* _url) : Datei(_url){
...
}


1) mit dem code:

DateiErgzusBin* d = new DateiErgzusBin("test");
Datei* d2 = (Datei*) d;
string name = d2->getUrl();

bekomme ich name = test;

2) aber mit dem code:

DateiErgzusBin* d = new DateiErgzusBin("test");
BaumElement* b = new BaumElement(d);
Datei* d2 = b->getDatei();
string name = d2->getUrl();

bekomme ich name = ""!!! warum?

Wenn ich meine Datei in das BaumElement reintue, wird die Eigenschaft name zu "" (es ist nur name einen string ist; Wenn name einen Double ist kriege ich auch den richtigen wert raus).

danke
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Eventuell ist dein char* - ptr nicht mehr aktuell.
Bitte benutz QString nicht nicht char* / string wenn du mit Qt arbeitest.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
darmstadt
Beiträge: 46
Registriert: 18. April 2006 09:33

Beitrag von darmstadt »

Richtig! jetzt geht es!

Was ist der üblicher Weg für den umgang mit char* string und QString?
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

darmstadt hat geschrieben: Was ist der üblicher Weg für den umgang mit char* string und QString?
Wenn man eine Qt-anwendung baust sollte man eigentlich immer QString nehmen. Sonst handelt man sich nur unnötige Konvertierungen ein und (im Falle von char*) verliert ggf. die Kodierung.
In deinem Fall würde ich

Code: Alles auswählen

Datei::Datei(const char* _url);
als Konstruktor und
QString  this->url;
als internen Datentyp
benutzen.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Antworten