Seite 1 von 1

vererbungsproblem

Verfasst: 18. April 2006 10:03
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

Verfasst: 18. April 2006 10:15
von Christian81
Eventuell ist dein char* - ptr nicht mehr aktuell.
Bitte benutz QString nicht nicht char* / string wenn du mit Qt arbeitest.

Verfasst: 18. April 2006 11:23
von darmstadt
Richtig! jetzt geht es!

Was ist der üblicher Weg für den umgang mit char* string und QString?

Verfasst: 18. April 2006 11:39
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.