[gelöst] Auf Adresse von QObject zugreifen

Du bist neu in der Welt von C++? Dann schau hier herein!
Antworten
Bronski
Beiträge: 44
Registriert: 10. Oktober 2008 13:46

[gelöst] Auf Adresse von QObject zugreifen

Beitrag von Bronski »

Hallo,
Ich habe eine Klasse deklariert die letztenendes von QObject abgeleitet ist.

Code: Alles auswählen

class Tdavids_class: public QObject
{
};

class Theap: public Tdavids_class
{
};

Ich habe dazu folgende Fragen :

1. Ich möchte an folgende Methode von Theap die Adresse von QObject übergeben:

Code: Alles auswählen

inline int call_on_ptr_change(QObject* sender,char* old_ptr,char* new_ptr)
{
}
Der Versuch es folgendermaßen zu machen schlug mit der Meldung error: "invalid use of 'class QObject' "fehl:

Code: Alles auswählen

this->call_on_ptr_change(&(this->QObject()),old_ptr,ptr); 
Woher bekomme ich die Adresse von QObject ?

2. Was für ein Zeigertyp ist eigentlich "this" von Theap aus ?
Ist es Theap* oder QObject* ?

Wenn ich in der Klasse Tdavids_class ein Attribut namens parent realisieren möchte,dass mir die Adresse der ableitenden Klasse zurück gibt, reicht dazu die Anweisung this->parent = this; im Konstruktor der ableitenden Klasse oder ist ein anderer Weg notwendig oder eleganter ?
Zuletzt geändert von Bronski am 11. Dezember 2008 18:32, insgesamt 1-mal geändert.
solarix
Beiträge: 1133
Registriert: 7. Juni 2007 19:25

Beitrag von solarix »

Ein Upcast wird immer implizit ausgeführt. Eine abgeleitete Klasse (Derived) wird also "automatisch" zu einer Basisklasse (Base) umgewandelt.

"this" ist also ein "Theap*", wird jedoch falls benötigt automatisch in einen "Tdavids_class*" oder auch "QObject*" gewandelt. Also:

Code: Alles auswählen

  // in Klasse "Theap":
  call_on_ptr_change(this,old_ptr,ptr);
Bronski
Beiträge: 44
Registriert: 10. Oktober 2008 13:46

Beitrag von Bronski »

Vielen Dank. :)
Das war sehr hilfreich.
Antworten