Was sicher ganz dummes: Array will keine Werte annehmen
-
Ihr habt das mit Sicherheit in 2 Sekunden heraus: Ich habe einen Array im Header deklariert mit
private: int arrFields[FIELD_SIZE];FIELD_SIZE ist dabei ein wohldefinierter Wert. Wenn ich nun später im Hauptprogramm diesem Array etwas zuweisen will...
arrFields[] = { 0,0,0,0 };...bekomme ich folgende Fehlermeldung:
error C2059: syntax error : ']'
error C2143: syntax error : missing ';' before '{'
error C2143: syntax error : missing ';' before '}'Was mache ich denn hier falsch? In meinem Buch steht doch drin, dass ich in den Klammern nichts stehen haben muss. Falls es sehr dumm ist, sorry, ich programmiere noch nicht lange C++

-
musst du im konstruktor initialisieren. wert für wert
arrFields[0] = 0;
arrFields[1] = 0;oder mit ner schleife. oder memcpy
-
diese notation kannst du nur bei der initialisierung (definition, deklaration???) benutzen. danach führt kein weg vorbei an einer schleife oder einer böhsen mem*-Funktion (je nach dem...)

edit: Tsu Spet lässt grüßen

-
Hmmm nagut, dann muss ich die 600 Werte in den Header nehmen

-
Geht immernoch nicht... hab jetzt alles in die Header-Datei geschrieben, er meckert immernoch über das "{". Das steht doch so im Buch drin!?

-
Na schön, anders gefragt: Wie deklariere ich folgenden Block, damit ich von überall im Programm Zugriff auf ihn habe?
const int arrFields[] = { 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, 9,0,0,0,0,3,0,3,0,4,0,4,0,4,0,0,4,0,4,0,4,0,3,0,3,0,0,0,0,9, 9,0,0,0,0,0,3,0,3,0,4,0,4,0,4,4,0,4,0,4,0,3,0,3,0,0,0,0,0,9, 9,0,0,0,0,0,0,3,0,3,0,4,0,4,0,0,4,0,4,0,3,0,3,0,0,0,0,0,0,9, 9,0,0,0,0,0,0,0,3,0,3,0,4,0,4,4,0,4,0,3,0,3,0,0,0,0,0,0,0,9, 9,0,0,0,0,0,0,2,0,3,0,3,0,4,0,0,4,0,3,0,3,0,2,0,0,0,0,0,0,9, 9,0,0,0,0,0,2,0,2,0,3,0,3,0,3,3,0,3,0,3,0,2,0,2,0,0,0,0,0,9, 9,0,0,0,0,2,0,2,0,2,0,3,0,3,0,0,3,0,3,0,2,0,2,0,2,0,0,0,0,9, 9,0,0,0,2,0,2,0,2,0,2,0,2,0,2,2,0,2,0,2,0,2,0,2,0,2,0,0,0,9, 9,0,0,1,0,1,0,1,0,1,0,1,0,1,0,0,1,0,1,0,1,0,1,0,1,0,1,0,0,9, 9,0,1,0,1,0,1,0,1,0,1,0,1,0,1,1,0,1,0,1,0,1,0,1,0,1,0,1,0,9, 9,1,0,1,0,1,0,1,0,1,0,1,0,1,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,9, 9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9, 9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9, 9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9, 9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9, 9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9, 9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9, 9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9, 9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9 };
-
Hallo,
Theoretisch geht es indem du einfach dein Array arrFields[] in einen header schreibst und diesen in jedes Modul deines Programmes inkludierst:Beispiel:
// header.hpp const int arrFields[] = { ... }; // foo.cpp #include "header.hpp" int func() { if((sizeof(arrFields) / sizeof(arrFields[0])) >= 2) return arrFields[0] * arrFields[1]; return 0; } // bar.cpp #include <iostream> #include "header.hpp" using namespace std; int func(); int main() { cout << arrFields[0] << '\n'; cout << " r = " << func() << "\n\n"; }Meistens gibt es jedoch einen eleganteren Weg, der globale Variablen vermeidet...
Caipi
-
Der ganze Block steht ja schon in einem Header und trotzdem kommt diese Fehlermeldung
gamefield.h(46) : error C2059: syntax error : '{'
gamefield.h(46) : error C2334: unexpected token(s) preceding '{'; skipping apparent function body Gamefield.cpp
-
scheiß compiler ?

-
welchen benutzt denn?