VS C++ Windows-Forms globales string array?

klein611

Grünschnabel
Hi ich versuche gerade ein string array global zu deffinieren (falls das überhaupt geht).
Code:
sind nur ausschnitte von den arrays.
string PicListArray[11][5]={ {"hiragana_a","hiragana_i","hiragana_u","hiragana_e","hiragana_o"},
									 {"hiragana_ka","hiragana_ki","hiragana_ku","hiragana_ke","hiragana_ko"},
									 {"hiragana_sa","hiragana_shi","hiragana_su","hiragana_se","hiragana_so"},
......
								   };
		string AwListArray[11][5]={ {"a","i","u","e","o"},
									{"ka","ki","ku","ke","ko"},
									{"sa","shi","su","se","so"},
									{"ta","chi","tsu","te","to"},
......
								   };

ich hab schon versucht das in ne header zu packen aber ohne erfolg.
ich weiß die infos sind etwas spärlich aber ich hoffe es findet einer lust mir das zu erklären.
danke
 
Japanisch?
Was ist denn heute los...3 Jahre keine einzige Frage in dem Forum, die irgendwas mit Japan zu tun hat, und jetzt gleich 2 an einem Tag:D

??????????????
?????????????????????????
??????????????????????????
??????????????????????????????

Wie lautet die Fehlermeldung?
Hast du Includeguards in deiner Headerdatei?
Generell sollten keine Variablen in Headern angelegt werden
Sondern zB in eine Sourcedatei und in den anderen mit extern einbinden.


?????
 
Code:
1>c:\users\dio\documents\visual studio 2010\projects\japanisch_trainer_v22\japanisch_trainer_v2\globals.h(3): error C2059: Syntaxfehler: 'private'
1>c:\users\dio\documents\visual studio 2010\projects\japanisch_trainer_v22\japanisch_trainer_v2\globals.h(4): error C2146: Syntaxfehler: Fehlendes ';' vor Bezeichner 'PicListArray'
1>c:\users\dio\documents\visual studio 2010\projects\japanisch_trainer_v22\japanisch_trainer_v2\globals.h(4): error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
1>c:\users\dio\documents\visual studio 2010\projects\japanisch_trainer_v22\japanisch_trainer_v2\globals.h(4): error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
1>c:\users\dio\documents\visual studio 2010\projects\japanisch_trainer_v22\japanisch_trainer_v2\globals.h(4): error C2440: 'Initialisierung': 'const char [11]' kann nicht in 'int' konvertiert werden
1>          Es gibt keinen Kontext, in dem diese Konvertierung möglich ist

ich hab das Array in globals.h geschrieben. globals.h includiert stdafx.h unf form1.h.
warscheindlich hab ich das ganze noch ned so kapiert mit den herder. hoffe das hilft etwas weiter zur beantwortung meiner frage.
 
Poste bitte einmal den kompletten Header, ich seh nämlich kein private und mit den Zeilennummern kann man so auch nichts anfangen.
 
Code:
#include "stdafx.h"
#include "Form1.h"
private:
	 string PicListArray[11][5]={ {"hiragana_a","hiragana_i","hiragana_u","hiragana_e","hiragana_o"},
									 {"hiragana_ka","hiragana_ki","hiragana_ku","hiragana_ke","hiragana_ko"},
									 {"hiragana_sa","hiragana_shi","hiragana_su","hiragana_se","hiragana_so"},
									 {"hiragana_ta","hiragana_chi","hiragana_tsu","hiragana_te","hiragana_to"},
									 {"hiragana_na","hiragana_ni","hiragana_nu","hiragana_ne","hiragana_no"},
									 {"hiragana_ha","hiragana_hi","hiragana_hu","hiragana_he","hiragana_ho"},
									 {"hiragana_ma","hiragana_mi","hiragana_mu","hiragana_me","hiragana_mo"},
									 {"hiragana_ya","hiragana_i","hiragana_yu","hiragana_e","hiragana_yo"},
									 {"hiragana_ra","hiragana_ri","hiragana_ru","hiragana_re","hiragana_ro"},
									 {"hiragana_wa","hiragana_i","hiragana_u","hiragana_e","hiragana_wo"},
									 {"hiragana_n","hiragana_i","hiragana_u","hiragana_e","hiragana_o"},
								   };
	string AwListArray[11][5]={ {"a","i","u","e","o"},
									{"ka","ki","ku","ke","ko"},
									{"sa","shi","su","se","so"},
									{"ta","chi","tsu","te","to"},
									{"na","ni","nu","ne","no"},
									{"ha","hi","hu","he","ho"},
									{"ma","mi","mu","me","mo"},
									{"ya","i","yu","e","yo"},
									{"ra","ri","ru","re","ro"},
									{"wa","i","u","e","wo"},
									{"n","i","u","e","o"},
								   };
 
Was hat das private da zu suchen?
private gibts nur in Klassen

Außerdem können Includeguards nie schaden
C++:
#ifndef HEADER_GLOBALS //Name ist frei wählbar
#define HEADER_GLOBALS
//Der Code...
#endif

Und nocheinmal: Keine Variablen in Headerdateien!
a) Schreib die Array mit den Werten, so wie sie jetzt sind, in zB die Form1.cpp
und b) in allen anderen cpp-Dateien, wo du die Arrays brauchst, schreibst du das:

C++:
extern string PicListArray[11][5];
extern string AwListArray[11][5];
 
Ahh ok danke aber das mit den Includeguards hab ich nicht so ganz verstanden.
kommt dass in die form1.h oder in globals.h. und sorry ich kenn noch sehr wenig aus aber danke für die geduld.
und könnte ich das auch so machen dass ich eine zb eine variables.cpp mache und in der globale variablen deffiniere?
 
und könnte ich das auch so machen dass ich eine zb eine variables.cpp mache und in der globale variablen deffiniere?

Genau das mein ich-die Variablen in eine cpp packen.
In welche, ist letztendllich egal

Wenn die Includeguards für Verwirrung sorgen, ignorier sie einfach mal.
Hier brauchst du sie nicht.

Also angenommen, du machst eine eigene variables.cpp
Die würde dann einfach so ausschauen:
C++:
string PicListArray[11][5]={
    {"hiragana_a","hiragana_i","hiragana_u","hiragana_e","hiragana_o"},
    {"hiragana_ka","hiragana_ki","hiragana_ku","hiragana_ke","hiragana_ko"},
    {"hiragana_sa","hiragana_shi","hiragana_su","hiragana_se","hiragana_so"},
    {"hiragana_ta","hiragana_chi","hiragana_tsu","hiragana_te","hiragana_to"},
    {"hiragana_na","hiragana_ni","hiragana_nu","hiragana_ne","hiragana_no"},
    {"hiragana_ha","hiragana_hi","hiragana_hu","hiragana_he","hiragana_ho"},
    {"hiragana_ma","hiragana_mi","hiragana_mu","hiragana_me","hiragana_mo"},
    {"hiragana_ya","hiragana_i","hiragana_yu","hiragana_e","hiragana_yo"},
    {"hiragana_ra","hiragana_ri","hiragana_ru","hiragana_re","hiragana_ro"},
    {"hiragana_wa","hiragana_i","hiragana_u","hiragana_e","hiragana_wo"},
    {"hiragana_n","hiragana_i","hiragana_u","hiragana_e","hiragana_o"},
};

string AwListArray[11][5]={
    {"a","i","u","e","o"},
    {"ka","ki","ku","ke","ko"},
    {"sa","shi","su","se","so"},
    {"ta","chi","tsu","te","to"},
    {"na","ni","nu","ne","no"},
    {"ha","hi","hu","he","ho"},
    {"ma","mi","mu","me","mo"},
    {"ya","i","yu","e","yo"},
    {"ra","ri","ru","re","ro"},
    {"wa","i","u","e","wo"},
    {"n","i","u","e","o"},
};

Und in jeder anderen cpp-Datei, wo du die Arrays brauchst, schreibst du nur das irgendwo an den Anfang:
C++:
extern string PicListArray[11][5];
extern string AwListArray[11][5];
 
Code:
1>c:\users\dio\documents\visual studio 2010\projects\japanisch_trainer_v22\japanisch_trainer_v2\globals.cpp(2): error C2086: 'int i1': Neudefinition
1>          c:\users\dio\documents\visual studio 2010\projects\japanisch_trainer_v22\japanisch_trainer_v2\globals.cpp(2): Siehe Deklaration von 'i'
1>  Japanisch_trainer_v2.cpp
1>c:\users\dio\documents\visual studio 2010\projects\japanisch_trainer_v22\japanisch_trainer_v2\Form1.h(204): error C2071: 'Japanisch_trainer_v2::Form1::i1': Ungültige Speicherklasse

und die arrays:
Code:
1>  stdafx.cpp
1>c:\users\dio\documents\visual studio 2010\projects\japanisch_trainer_v22\japanisch_trainer_v2\globals.cpp(4): error C2146: Syntaxfehler: Fehlendes ';' vor Bezeichner 'PicListArray'
1>c:\users\dio\documents\visual studio 2010\projects\japanisch_trainer_v22\japanisch_trainer_v2\globals.cpp(4): error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
1>c:\users\dio\documents\visual studio 2010\projects\japanisch_trainer_v22\japanisch_trainer_v2\globals.cpp(4): error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
1>c:\users\dio\documents\visual studio 2010\projects\japanisch_trainer_v22\japanisch_trainer_v2\globals.cpp(4): error C2440: 'Initialisierung': 'const char [11]' kann nicht in 'int' konvertiert werden

ich hab die arrays und i1 in globals.cpp eingefügt. und in die stdafx.h includiert mit #include globals.cpp und in meiner form mit extern int i1; und extern string PicListArray[11][5]; und
extern string AwListArray[11][5]; abgerufen klappt aber nicht. scheint so als ob ich iwas grundlegendes nicht verstanden hab.
 
Zurück