int Feld in Klassen Deklarieren
-
Servus ich will in einer Klasse ein Integerfeld anlegen und vorbelegen.
Ich bekomme aber jedes mal den Fehler.error: primary-expression before '{' token ....
Wie beleg ich die Variable raum nun vor????
Danke für euer bemühenclass haus { private: int raum[]; public: haus(void) { raum[51] = {50}; }
-
Da die Membervariablen einer Klasse quasi an der öffnenden geschweiften Klammer
des Konstruktors erstellt werden, muss die Größe des Array an dieser Stelle
schon bekannt sein.EDIT: Mit der Vorinitialisierung bin ich mir aber grade auch unschlüssig.
Also spätestens in der Vorinitialisierungsliste.
Alternativ kann man natürlich den Array im Konstruktor mit new erzeugen.
Dann steht allerdings in der Klassendefinition ein int* raum anstatt dem int raum[]
-
Das geht so leider nicht. Direkt vorbelegen kann man nur integrale statische Konstanten. Nicht statische Variablen/Konstanten muss man im Konstruktor initialiseren.
Bei Arrays geht das sogar nur im Implementierungsteil:class Bla { public: Bla(); //... private: //int[50] Objekt als Member int a[50]; }; Bla::Bla() { //alle Elemente vom int[50] Member mit dem Wert 50 belegen for(int n = 0; n < 50; ++n) { a[n] = 50; } }
Am besten wäre es, den Vector-Container zu benutzen:
class Bla2 { public: Bla2(); //... private: //vector mit int vector<int> vec; }; //in Init-Liste: 50 Elemente im Vector, vorbelegt mit Wert 50 Bla2::Bla2():vec(50,50){;}
-
@ Tachyon jo des mit vektor container lese ich gerade durch wie des geht.
Versteh ned warum bei Klassen wieder alles anders sein muss ? !
Was meinst du eigentlich mit integrale ???
In Mathe kann ich Integrieren jedoch sagt mir des jetzt nix genaues in C++
-
Mit integralen Typen sind im C-Speak Ganzzahltypen gemeint. Die korrekte Bezeichnung wäre Ordinaltypen, denke ich.
Probier mal in C (so ganz ohne Klassen) ein Array das in eine Struktur eingebettet ist so vorzubelegen.
Mal ganz davon abgesehen hat es konkrete Gründe, dass es so ist.
-
Also in C bzw in C++ weiß ich eigentlich wie man integerfelder vorbelegt.
so z.B.: int test[6] = {1,2,3,4,5,6};
Jedoch in Klassen scheint des ned zu funktionieren.ich hab des ganze jetzt mit vectoren gemacht.
Aber:
1. Wie belege ich Vektoren vor? im Konstruktor.Aber viel wichtiger ...
2. Wie gebe ich die Vektoren aus ?
vector<int> zahl;cout << zahl[i]; // dann bekomm ich die i-te Stelle von vektor zahl.
Jedoch wie soll ich des in Klassen machen ?hab dort eine Überladene friend Methode mit dem << Operator.
Könnte jemand einen kleinen verständlichen code hier rein posten ??
Wär cool. Danke schon mal
-
Also grundsätzlich ist die Benutzung eines std::vector gleich, wie die Benutzung eines normalen Array's.
1. Hat Tachyon bereits beantwortet.
2. Hast du die Lösung ja bereits hingeschrieben. Und wenn du weisst, wie man sonst mit Feldern umgeht, sollte dir die Benutzung von std::vector keine Probleme machen.
-
Wenn man so 'n Array als static deklariert, kann man es ohne Probleme wie folgt initialisieren:
class myclass{ static int array[8]={0}; ... };
Das Array ist dann aber auch tatsächlich eben static, mit allen Nach- und Vorteilen.
-
ke namä schrieb:
Wenn man so 'n Array als static deklariert, kann man es ohne Probleme wie folgt initialisieren:
Nicht ganz, aber so:
class myclass{ static int array[8]; }; int myclass::array[8]={0};