Hilfe, habe BLACKOUT bei Arrays...
-
Aloha bums,

das erste ist im Prinzip genau das, was ich suche, bloß wo schreibe ich das in meine Klasse, um in den Methoden ggfs. darauf zugreifen zu können ?
Das zweite ist klar, das will ich ja nicht, sondern ich will eine Initialisierungsliste verwenden.Wenn ich das erste aber nun verwende,bekomme aber immer eine Fehlermeldung.
error C2059: Syntaxfehler : '{' error C2334: Unerwartete(s) Token vor '{'; sichtbarer Funktionsrumpf wird übersprungenwenn ich den code als public Member deklariere.
Ich habs schlicht vergessen, wo man ne ini-Liste hinschreibt. Und das war Kinderkacke, ich weiß es genau....

Grüße
Ein momentan ratloser und vergeßlicher
BOA
-
einmal statisch (enum hack wegen studio)
einmal dynamisch
class Array1{ enum {MAX=10}; int ar[MAX]; public: Array1(){ for (int i=0; i<MAX; i++){ ar[i]=i; } } }; class Array2{ int *pAr; const int MAX; public: Array2(int dyn) : MAX (dyn){ pAr=new int (MAX); for (int i=0; i<MAX; i++){ pAr[i]=i; } } //deleten über destruktor nicht vergessen };
-
Aloha elise,
danke für die Antwort.
Ne hübsche Lösung, sicherlich.
Allerdings will ich das Rad nicht neu erfinden, sondern auf simple C++ - Grammatik zurückgreifen.Initialisierungsliste ist das Stichwort. Ich bin doch nicht der einzigste Mensch, der davon schon gehört hat, oder ?

Grüße
BOA
-
hallo??
da ist deine initialisierungsliste

das ist das, was nach dem einfachen doppelpunkt hinter dem konstruktor steht.
was meinst du denn sonst damit?
Konstruktor (parameter) : initialisierungsliste { implementierung }
----
ps: du wirst den konstruktor der klasse wohl bemuehen müssen, dein array zu initialisieren.
oder mach es statisch.----
ppps: und wennste mir nich glaubst, hier noch nen gescheiter link von nem klugen
http://tutorial.schornboeck.net/initliste.htm
so long
-
Aloha Elise,
Du hast Recht, ich meine keine Ini-Liste.

Wie zur Hölle heißt denn dieses Konstrukt hier ?

int feld[20] = {0,1,2,3,4....,19};Grüße
BOA
-
Feldinitialisierung oder so... 'Nen besonderen Namen habe ich dafür noch nie gehört.
-
Das Ding geht halt nur, wenn du deine Variable Funktionslokal machst, nicht wenn du sie als Member einer Klasse machst.
-
na das ist die Aussage, die ich eigentlich nicht hören wollte.

Mir war so, als ob das auch mit Membern ginge.Ich muß 160 int´s setzen, und wollte nicht ne ewig lange Liste schreiben
feld[0] = 1; feld[1] = 3; feld[2] = 5499; ...sondern lieber
feld[160] = {0,1,2,3...159}Aber wenn es net jeht, dann jeht es nicht...
Grüße und Danke an alle
BOA
-
Ich würde mit einer for-Schleife Werte aus einem statischen Array einkopieren. So ungefähr macht der Compiler das intern bei int foo[] = { ... } auch bloß, also tut das nicht weh.
-
Aloha Bashar,
thx, finde ich ne gute Alternative...
Teste ich gleich mal....
Grüße
BOA
-
Hab ich da was falsch verstanden oder könnt ihr kein cplusplus ?
//Header-Datei class CTest { public: CTest(void); ~CTest(void); public: static const unsigned char Array1[4]; static const unsigned char Array2[7]; }; //Cpp-Datei const unsigned char CTest::Array1[4] = {0,1,2,3}; const unsigned char CTest::Array2[7] = {0,1,2,3,4,5,6}; CTest::CTest(void) { } CTest::~CTest(void) { }
-
er hat nicht gesagt, daß das feld static und const sein soll...

-
ja das stimmt, aber er hat auch nicht gesagt, das das array veränderbar sein soll :D. ich dachte mir nur, da es bis jetzt noch niemand vorgeschlagen hat, tue ich es halt (vielleicht hätte ich den zweiten halbsatz weglassen sollen, sorry).
-
War vielleicht etwas undeutlich, aber ein statisches Array in deiner Art ist schon Teil meiner Lösung

-
deine lösung merke ich mir mal für spätere zeiten...
dann muss ich nicht immer so rumackern.