On 26 Mar 2003 at 17:26, Holger Macht wrote:
Am Mittwoch, 26. März 2003 16:38 schrieb Stefan Sassenberg:
Hallo Holger,
hallo ist in deinem Beispiel eine Variable *eines Objektes* der Klasse1.
(Ohne auf die Verteilung auf verschiedene Dateien zu achten) hier ein ungetesteter Vorschlag:
#include <iostream>
class Klasse1 { public: QString hallo; };
class Klasse2 { public: Klasse1 mK1; void set() { mK1.hallo = QString("hallo welt"); }
Jetzt habe ich verstanden, dass ich erst ein Object der Klasse Klasse1 erstellen muss, um dann auf Membervariabln zugreifen zu können. Da stellet sich aber nun ein neues Problem: Ich möchte den Wert der einen Klasse übergeben. Wenn ich aber ein neues Object der Kalsse erstelle, wird auch die Variable neu erzeugt (hallo) und damit ihr Inhalt gelöscht. Falls ich sie aber als static deklariere bekomme ich folgende Fehlermeldung:
undefined reference to `Klasse1::hallo'
Also in Klasse1 soll hallo ein Wert zugewiesen weden und in Klasse2 will ich dann darauf zugreifen.
Das hab ich nicht ganz kapiert, aber vielleicht hast du noch ein konzeptionelles Problem damit. Daher die Frage: Wo ist denn dieses Objekt der Klasse1 definiert? Wem gehört es? In meinem Beispiel enthält jedes Objekt der Klasse2 ein eigenes Objekt der Klasse1. Soll jedes Objekt der Klasse1 auf das selbe hallo zugreifen, ist die Deklaration mit "static" schon richtig. Jedoch muss man dazu beachten, dass solche Variablen zusätzlich außerhalb der Klassendeklaration deklariert werden müssen, da alles was innerhalb der geschweiften Klammern der Klassendeklaration steht, zum Objekt dieser Klasse gehört und statische Variablen nicht einem Objekt (sondern allen) zugehörig ist. Füge also ein (z. B. vor int main()): QString Klasse1::hallo; und es sollte gehen. Grüße Stefan