objekt einer klasse als array
-
also erstmal hoffe ich ja, dass die überschrift nicht all zu blöde gewählt ist*g*
also mein problem:
#include <iostream> using namespace std; class foo { int kontostand; public: int get_kontostand(); void set_kontostand(int wert); foo(){kontostand=0;} ~foo(); }; foo::~foo() { cout<<"Konto gelöscht...\n"<<endl; } int foo::get_kontostand() { return kontostand; } void foo::set_kontostand(int wert) { kontostand=wert; }
soweit erstmal.. bis hier ist noch alles in butter.. ich will jetzt in der main-funktion ein array haben:
int main() { foo *k; int eingabe; k= new foo[10]; return 0; }
soweit dürfte das richtig sein oder?
wie kann ich jetzt beispielsweise jedem objekt (k[0] - k[9]) den wert 0 zuordnen?
ich dachte eigentlich, es geht so weiter:for(int i=0; i<10; ++i) { k[i]=0; }
aber irgendwie scheint das ja falsch zu sein.. kann mir jemand sagen, ob es wenigstens bis dahin richtig ist und wie man den objekten einen wert zuweisen kann?
-
Du solltest einen operator= definieren - sonst wird die Zuweisung nicht klappen.
Oder du rufst immer set_kontostand() auf, statt der Zuweisung.
Ansonsten ist die Schleife richtig.
-
könntest du mir das mit dem operator mal kurz erläutern? versteh nicht ganz was du meinst..
-
am besten auch das andere.. ich glaub da steig ich auch nicht so ganz durch..
-
Du könntest auch noch einen Constructor einfuegen:
foo(int stand):kontostand(stand){};
Mitells dieses Constructors wird der Fehler beim Compilieren beseitigt. Im Grunde ist es aber doch gefährlich solche implizite Konvertirungen zu fördern.
-
was macht der konstruktor denn genau?
-
mullog schrieb:
was macht der konstruktor denn genau?
Der Konstruktor speichert den Wert des übergebenen Parameters in dem Attribute der Klasse. Aber das Wichtigste daran ist, das Einfuegen des Konstruktors ermöglicht fehlerfreies Compilieren der folgenden Zeile:
k[i] = 0;
wird interpretiert als
k[i] = foo(0);//es gibt einen passenden Konstruktor