Zugriff auf Daten/Methoden anderer Klassen
-
Ich habe mal eine Frage zum Zugriff auf andere Klassen...
ich habe folgenden Pseudocode:
class DatenObject :Widget { int data1_; int handle(int event); public: void data1(int i) { data1_ = i; } } DatenObject::DatenObject(Widget *parent){ data1(0); } class MainObject : Window { dataCell *data_cells_[5][5]; public: MainObject(); ~MainObject(); void checkData(bool flag); }Im constructor vom MainObject lege ich mehrere Datenobjekte an:
MainObject::MainObject :window(0) { DatenObject *data; for (i = 0; i < 5; i ++) for (j = 0; j < 5; j ++) { data = new DatenObject(this); data_cells_[i][j] = data; } }in weiteren Methoden von MainObject werden die Daten manuell verändert
und mit dieser Methode auf Konsistenz überprüft.void MainObject::checkData(bool flag) { code }nun möchte direkt nach der Dateneingabe den eingegebenen Wert in
Abhängigkeit aller Werte im Array überprüfen mit dieser Methodeint DatenObject::handle(int event) { code ?(MainObject::checkData(true))? }Wie rufe ich MainObject::checkData auf? komme einfach nicht weiter.
-
Erstmal ist eine Klasse nur ein Bauplan für Objekte - um damit arbeiten zu können, mußt du ein konkretes Objekt von dieser Klasse anlegen (z.B. als globales Objekt oder als Element der Klasse "DatenObject").
-
beim erzeugen von 'Datenobject' gibste ja schon einen pointer auf 'Mainobject' (parent) mit. den musste nur noch im 'Datenobject' speichern und dann: (MainObject*)parent->checkData(...) aufrufen ...
-
reinterpret_cast<MainObject>(parent)->checkData(...)
-
Danke, so gehts jetzt

Auf reinterpret_cast<MainObject*>(parent)->checkData(true) wäre ich nie gekommen...rein interessehalber:
Wie löse ich das Problem wenn ich keinen Pointer auf MainObject übergebe (ist ja mehr "zufällig" wegen parent vom widget)?
-
walter sparbier schrieb:
Wie löse ich das Problem wenn ich keinen Pointer auf MainObject übergebe (ist ja mehr "zufällig" wegen parent vom widget)?
Indem Du zusätzlich einen Pointer (oder Referenz) auf das MainObject übergibst.
-
LordJaxom schrieb:
Indem Du zusätzlich einen Pointer (oder Referenz) auf das MainObject übergibst.
...könnte man das nicht mit einer getInstance() Methode machen?