Klasse mit Array-Feeling...
-
Hi. Ich habe ein kleines Problem. Ich will eine Klasse basteln, von der sich auch Arrays erstellen lassen - also Zugriff auf Elemente und Erstellung eines Feldes mit eckigen Klammern []. Die "normale" Variante sieht vereinfacht etwa so aus:
class t_klasse { public: t_klasse(double a=0, bool b=0, char c=0, int d=1) { ... }; ... private: double a; bool b; char c; int d; };Beim Entwurf bin ich mir nicht ganz sicher, wie ich zwischen Konstruktor-[] und Zugriffs-[] unterscheiden kann.
Konzept:class t_klasse { public: t_klasse(double a=0, bool b=0, char c=0, int d=1); t_klasse operator[](size_t size) { a=new double[size]; b=new bool[size]; c=new char[size]; d=new int[size]; } // denke, so lässt sich ein Feld erstellen ?! t_klasse(double a, bool b, char c, int d) { this->a=new double(a); this->b=new bool(b); this->c=new char(c); this->d=new int(d); } // Standard-Konstruktor private: double *a; bool *b; char *c; int *d; };Wie kann ich aber nun zugreifen? Ruft man t_klasse[element] auf, sollte theoretisch eine "NON-ARRAY t_klasse" zurückgegeben werden. Wäre dankbar über Ansätze zur Realisierung!
//edit:
Von Klassen-Pointer-Inkompatibilität geblendet hab ich ganz vergessen, das sich auch von "Natur aus" Klassen-Arrays erstellen lassen.

Naja, damit mein Posting weiterhin Sinn behält, gehen wir mal davon aus, dass sich die Größe des Arrays dynamisch ändern lässt.
Die zentrale Frage ist aber noch die Geschichte mit den eckigen Klammern.
-
du hast den sinn des op[] nicht verstanden.
char foo[5];//dafür ist er nicht //dafür ist er foo[0]='a'; std::cout<<foo[0];
-
Danke
Klingt einleuchtend... Aber wie kann man einen Konstuktor, der beim erstellen von Arrays aufgerufen wird, z.B.char matrix[20];überladen? Vielleicht new[] überladen? Wie könnte eine entsprechende Klasse in Etwa aussehen?
-
Garnicht..
Wenn Du
tKlasse matrix[20];machst werden 20 Objekte vom Typ tKlasse erzeugt und auch für jedes der 20 der Standard-Konstruktor einmal aufgerufen.
Was willst Du denn erreichen? Kannst Du nicht die Anzahl dem Konstruktor als Integer übergeben und dann ein passendes Feld erzeugen?
-
Ich habe eine Festsellung gemacht: Ich hab unglaublichen Müll gepostet

Hatte ein einfaches Problem, aber meine herangehensweise war völlig falsch.sry