Mailinglist Archive: opensuse-programming-de (211 mails)

< Previous Next >
Re: Auf Daten einer anderen Klasse zugreifen
  • From: Bodo Kaelberer <BodoKaelberer@xxxxxxxxxx>
  • Date: Wed, 26 Mar 2003 19:27:24 +0100
  • Message-id: <111942024.20030326192724@xxxxxxxxxx>

> Mein Problem:
> Ich habe in QT zwei topLevelWindows also 2 verschiedene Klassen. Also
> keines ist ein child des Anderen.

> In der einen will ich dem QString Dateiname einen Wert zuweisen.

> In der anderen will ich dann auf diesen Dateinamen zugreifen.

> Mein Grundprinzip also (soweit ich es verstanden habe):

> Fenster/Klasse 1:
> 1. Deklarieren einer Variable Dateiname als QString und static

Da Du wahrscheinlich ohnehin eine Instanz des Fensters erzeugen wirst,
ist es eigentlich unsinnig, die Variable static zu deklarieren.
Das macht nur Sinn, wenn man eine von Instanzen unabhaengige Variable
braucht oder wenn mehrere Instanzen eine Variable gemeinsam benutzen
wollen.

> 2. Dieser Variable einen Wert zuweisen

> Fenster/Klasse 2:
> 3. EIn Objekt der Klasse 1 erstellen
> 4. Auf die Variable Dateiname mit dem Wert aus Klasse 1 zugreifen:
> (Klasse1.Dateiname)

Ich Hab nie etwas mit QT gemacht, aber hier eine allgemeine Loesung
mit einer nicht-statischen Variablen und sinngemaessen Funktionsnamen:

class Klasse1 {

public:

QString dateiname;

Klasse1() {
}

void zeigeDialog() {
// hier bekommt dateiname seinen Wert
}

};

class Klasse2 {

Klasse1 dateiAuswahlDialog;

public:

Klasse2() {
}

void waehleDatei() {
dateiAuswahlDialog.zeigeDialog();
QString datei = dateiAuswahlDialog.dateiname;
}

};


int main() {
Klasse2 k2;
}

Das wuerden allerdings die meisten (mich inklusive) als unsaubere
Datenkapselung bezeichnen. Sauber waere, Du wuerdest in Klasse1 die
Variable private deklarieren und dafuer eine oeffentliche Funktion wie
holeDateiName() zur Verfuegung stellen.


Bye

--
| Bodo Kaelberer
| http://www.webkind.de/
| http://www.mehr-demokratie-wagen.de/
----
| Haben oder Nichts sein


< Previous Next >