Seite 1 von 1

[gelöst] Auf Adresse von QObject zugreifen

Verfasst: 23. Oktober 2008 14:10
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 ?

Verfasst: 23. Oktober 2008 14:53
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);

Verfasst: 23. Oktober 2008 20:24
von Bronski
Vielen Dank. :)
Das war sehr hilfreich.