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
vererbungsproblem
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
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.darmstadt hat geschrieben: Was ist der üblicher Weg für den umgang mit char* string und QString?
In deinem Fall würde ich
Code: Alles auswählen
Datei::Datei(const char* _url);
als Konstruktor und
QString this->url;
als internen Datentyp
MfG Christian
'Funktioniert nicht' ist keine Fehlerbeschreibung
'Funktioniert nicht' ist keine Fehlerbeschreibung