Narf! Geschrieben 10. Januar 2003 Geschrieben 10. Januar 2003 Seit gegrüßt. Mal eine Anfängerfrage: In einer Klasse weise ich einer Variable einen Wert zu. Diesen Wert brauche ich in einer anderen Klasse. Wie bekomme ich den rüber? Klasse1: Zahl1=34; Klasse2: include Klasse1; Klasse1 k1; Zahl2=k1.Zahl1; Das ist mein vergeblicher Versuch, da in Klasse2 Zahl1=-464675. (MFC, Dialog)
Klotzkopp Geschrieben 10. Januar 2003 Geschrieben 10. Januar 2003 Du musst zwischen Klasse und Instanz unterscheiden. Die Instanz von Klasse1, die du in Klasse2 erzeugst, ist eine andere, als die, deren Variable den Wert enthält, an den du rankommen willst. Du musst eine Möglichkeit schaffen, der Instanz von Klasse2 die richtige Instanz von Klasse1 bekannt zu machen. Das macht man üblicherweise über Referenzen oder Zeiger. Man kann es auch über globale Variablen lösen, aber das ist nicht besonders schön und untergräbt das ganze Klassenkonzept. Erzeugt zufällig eine Instanz der einen eine Instanz der anderen Klasse? Dann ist das nämlich ganz einfach. P.S.: Verschon nach C und C++, weil das ein allgemeines (und ziemlich häufig auftretendes) Problem ist.
Guybrush Threepwood Geschrieben 10. Januar 2003 Geschrieben 10. Januar 2003 Hi, wenn du die Zahl in der Klasse 1 public deklariert hast, dann kannst du ja in der 2.Klasse die Zahl einfach zuweisen. Wenn du sie als private deklariert hast mußt du in der 1.Klasse noch eine Funktion public deklarieren die die Zahl zurückliefert. Eine andere Möglichkeit wäre die 2.Klasse von der ersten abzuleiten. Das sähe dann so aus: class Klasse2 : private Klasse1 { } Wenn ich mich unverständlich ausgedrückt habe, dann frag ruhig nochmal nach:) Gruß Guybrush
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden