Pointerlogik
-
Hi, wenn ich Zwei Pointer habe
int* a = new int(5); int* b; b = a; *a = 9; // Wert von b ist jetzt auch 9dann ändert sich der Wert von b jedesmal wenn ich a ändere.
Aber was kann ich machen um b jedesmal zu ändern mit einer Art "Funktion" dazwischen. Z.b. möchte ich das der Wert von b = 2*a ist und immer geändert wird wenn a sich ändert:int* a = new int(5); int* b; b = a; // Wert von b soll jetzt 10 sein. *a = 9; // Wert von b soll jetzt 2*a=18 sein.Geht das irgendwie?
Danke!
-
Der Wert von b ändert sich gar nicht, der bleibt a (und a ist hier ebenfalls konstant). Die Werte von *b und *a ändern sich. Da dir das nicht klar zu sein scheint: Kommst du zufällig von Java? In C++ sind Objekte und Zeiger da drauf ziemlich verschiedene Dinge.
Das wonach du hier fragst, würde man auch gar nicht mit Pointern lösen (überhaupt sieht man Pointer in C++ im Anwendungscode so gut wie nie, wenn überhaupt arbeiten die verborgen hinter den Kulissen). Du suchst wohl so etwas in dieser Richtung:
class Foo { int a; public: int get_a() const { return a; } void set_a(int aa) { a = aa; } int get_b() const { return 2*a; } };oder, je nachdem, wie kompliziert die Berechnung von b ist:
class Foo { int a; int b; public: int get_a() const { return a; } void set_a(int aa) { a = aa; b = 2 * a; } int get_b() const { return b; } };
-
der "wert" von a und b ändert sich nicht wenn du
*a = ...schreibst sondern der pointee.wie man das macht was du möchtest? direkt geht das gar nicht, du musst das irgendwie wrappen. in c++ am besten mit einer klasse.
wieso arbeitest du überhaupt mit rohen pointern und mit rohem
newetc.? ist höchstwahrscheinlich nicht das was du willst.edit: ups, zu langsam. seppj hat alles gesagt was ich mitteilen wollte, nur ausführlicher und verständlicher.