Stringarray einer klasse initialisieren??
-
Hallo
class MyEx { public: MyEx(int errornumber) { m_errnr = errornumber; } private: int m_errnr; const string failuretext[3]; }; string MyEx::failuretext={"Test","Hallo","Sie"};er sagt mir, das Bezeichner MyEx failuretext mehrfach deklariert ist!
stimmt ja, aber wie kann ich den string initialisieren??
-
Entweder im Konstruktor, wie bei nonstatischen Membern eigentlich üblich, oder Du machst die Konstante static.
-
hab mir erstmal über ein dynamisches array geholfen....aber
class MyEx { public: MyEx(int errornumber) { failuretext = new string[3]; failuretext[0] = "Division durch Null"; failuretext[1] = "Integerüberlauf"; failuretext[2] = "Integerunterlauf"; m_errnr = errornumber; } ~MyEx(){delete[] failuretext;} const string What() { return failuretext[m_errnr]; } private: int m_errnr; string *failuretext; }; int test(int a) { if(a == 0) throw MyEx(0); else if(a == 1) throw MyEx(1); else if (a == 2) throw MyEx(2); else throw MyEx(10); } int main(int argc, char* argv[]) { try { test(3); } catch(MyEx& exc) { cout<<exc.What(); } getch(); return 0; } //---------------------------------------------------------------------------jetzt zeigt er mir nix an, aber das fenster schließt sofort!
wieso?getch() am ende steht
wenn ich test mit 0 aufrufe, kommen viele lustige zeichen auf dem bildschirm!
wo liegt also der fehler??
btw, die frage mit dem "konstanten" initialisieren des stringarrys steht noch!
-
Und ich antworte Dir gerne nochmal:
Du musst die Konstante static machen, dann geht es wie von Dir oben gedacht.
Non-static musst Du die Konstante wie jedes andere Member initialisieren, im Konstruktor der Klasse.EDIT:
Falsch
class MyEx { private: int m_errnr; const string failuretext[3]; }; string MyEx::failuretext={"Test","Hallo","Sie"};Richtig
class MyEx { private: int m_errnr; static const string failuretext[3]; }; string MyEx::failuretext={"Test","Hallo","Sie"};Auch Richtig
class MyEx { public: MyEx() { failuretext[0]="Test"; failuretext[1]="Hallo"; ... } private: int m_errnr; const string failuretext[3]; };