variable aus einem anderen Objekt nutzen

sim4000

sim4000

Lebende Foren Legende
variable aus einem anderer Klasse nutzen

Nabend.

Folgendes Problem:
Ich hab 3 objekte. In dem zweiten hab ich eine Zahl in einen Integer gepackt. Nun brauche ich diesen Integer in dem dritten Objekt.
Wie kann ich die Variable auf das dritte Objekt übertragen?

Habs schon mit
Code:
objekt2::variable
in dem dritten Objekt versucht. Das klappt aber nicht. Und googlen hat auch nichs gebracht.
Wie funktioniert das?
Mfg, sim4000.
 
Zuletzt bearbeitet:
Ich glaube, da muß ein Beispiel her, sonst kapier ich nicht was Du möchtest ... 3 Objekte einer Klasse wohl nicht, also wohl 3 verschiedene Klassen, und davon Variablen ?

Heiko
 
Ich glaube Du möchtest eine Variable, bzw. deren Inhalt in 3 verschiedenen Funktionen nutzen oder?

Dann wären Pointer die Lösung :D
 
Falls du mit Objekten Klassen meinst, kommt es darauf an welchen Sichtbereich du den Variablen gegeben hast.
Code:
class classname
 {
   public:
      int a;
   private:
      int b;
 };
Auf a könntest du, wenn du eine Instanz der Klasse anlegst zugreifen.
Code:
classname foo;
classname bar;
foo.a=9; //funktioniert
cout << foo.a << endl; //funktioniert
bar.a = foo.a; // funktioniert
foo.b; //fehler, denn b ist private
Aber sowas sollte man IMHO mit set/get Funktionen lösen.
 
Zuletzt bearbeitet:
Er will sowas denke ich:
Code:
class a{
int get();
public:
int sonstwas();
};
class b{
int set();
public:
int auchwas();
};

int b::set(){
get();
}
 
Also. Noch mal von vorne:

Ich habe drei Klassen (hatte ich gestern verwechselt).
In der 2. hab ich eine int-variable vereinbart, die eine 5 endhält.
Jetzt möchte ich diese Variable in die dritte klasse übergeben lassen. So dass ich sie hier weiter verwenden kann.
Also den integer in der zweiten klasse in einen int in der dritten klasse übertragen.

Wie klappt das?
Mfg, sim4000.
 
Also. Noch mal von vorne:

Ich habe drei Klassen (hatte ich gestern verwechselt).
In der 2. hab ich eine int-variable vereinbart, die eine 5 endhält.
Jetzt möchte ich diese Variable in die dritte klasse übergeben lassen. So dass ich sie hier weiter verwenden kann.
Also den integer in der zweiten klasse in einen int in der dritten klasse übertragen.

Wie klappt das?
Mfg, sim4000.
Willst du nur den Wert übertragen oder den Integer selbst?
 
den wert.
Also den wert aus dem int in klasse 2 einfach in einen int in der aktuellen klasse übertragen.
 
Falls du mit Objekten Klassen meinst, kommt es darauf an welchen
Code:
class classname
 {
   public:
      int a;
   private:
      int b;
 };
Auf a könntest du, wenn du eine Instanz der Klasse anlegst zugreifen.
Code:
classname foo;
classname bar;
foo.a=9; //funktioniert
cout << foo.a << endl; //funktioniert
bar.a = foo.a; // funktioniert
foo.b; //fehler, denn b ist private

Ok. jetzt hab ich das bei genauerem Betrachetn so einigermaßen verstanden.
Nur noch eine Frage: was bedeutet classname foo; bzw classname bar; ?
classname ist der classenname. aber was hat es mit foo und bar auf sich?
 
Das sind Variablennamen.


Guck gerade MIB, toller Film.
 
Ok. jetzt hab ich das bei genauerem Betrachetn so einigermaßen verstanden.
Nur noch eine Frage: was bedeutet classname foo; bzw classname bar; ?
classname ist der classenname. aber was hat es mit foo und bar auf sich?
foo und bar sind Instanzen der Klasse classname :)
 
sim4000 schrieb:
Ok. jetzt hab ich das bei genauerem Betrachetn so einigermaßen verstanden.
Ok. Ich hab da jetzt gestern den ganzen abend daran gesessen, und hab es immer noch nicht hinbekommen. Hab auch voll allen möglichen Quellen Vorschläge getestet. Bekomme es trotzdem nicht hin. So langsan reichts mir aber. (Und euch bestimmt auch.)

Ich hab das jetzt so gemacht:
Code:
dtyp foo; //dtyp=2Klasse
dtyp bar;
bar.menge = anzahl; // Menge ist der int in der 2.Klasse dtyp // anzahl ist der int in der aktellen Klasse 3

Das hab ich in eine Methode gepackt, und aufgerufen. Aber er macht das nicht. Was mach ich nur falsch?
Mfg, sim4000.
 
Wenn Du einen privaten Datentyp aus einer Klasse auslesen moechtest, solltest Du eine entsprechende Funktion bereitstellen. Das war hier mit dem Erwaehnen der get/set Funktionen gemeint.
Code:
class KlasseA {
   int a;
public:
   Klasse A (int m): a(m) {}
   int get_a() const { return a; }
   int& set_a() const { return a; }
};

int main(){
    A aa(4);

    std::cout << aa.get_a() << '\n';

    aa.set_a() = 5;
    std::cout << aa.get_a() << '\n';

    return 0;
}
Der Gebrauch der 'set_a' Funktion mag gewoehnungsbeduerftig sein, ist jedoch praktischer als in
Code:
  void set_a(int m) { a = m; }

In Deinem Beispiel weiss der Compiler ja auch gar nicht, auf welches 'anzahl' Du zugreifen willst, da Du ja mehrere Instanzen der Klasse3 haben koenntest, und jede ihre eigene Kopie von 'anzahl' hat.
 

Ähnliche Themen

Keine grafische Oberfläche (Debian Installation)

C Programm unter Unix

Hardware RAID-0 kaputt / wird nicht mehr erkannt

Linux Mint 10 und ATI

mehrere variablen aus datei lesen

Zurück
Oben