000
28.01.2007, 22:07 Uhr
Yadgar
|
High!
Ich hatte ja vor einiger Zeit schon einmal danach gefragt... es geht immer noch um die Initialisierung eines Arrays von folgendem Typ:
C++: |
class Command { private: string name; // der Befehl selbst unsigned short params; // Anzahl der erforderlichen Parameter string helptxt; // Kurzbeschreibung, die nach dem Befehl --help angezeigt wird vector<string>errormsgs; // Fehlermeldung(en) public: Command(string in_name, unsigned short in_params, string in_helptxt, vector<string>* in_errormsgs); // Konstruktor void commData(void); // zeigt Mitglieder des Command-Objektes an };
|
Es handelt sich um eine Klasse für Kommandozeilen-Befehlswörter für ein einfaches Grafikbearbeitungsprogramm... in main() will ich ein Array dieser Command-Objekte initialisieren (gegenwärtig hat das Array nur ein Mitglied, in Zukunft sollen es natürlich noch erheblich mehr werden):
C++: |
Command commands[nCommands]={Command("--help", 0, "Zeigt alle Kommandos mit Kurzerläuterungen an", &errmsglist)};
|
So weit, so gut... nur leider scheint der Compiler (gcc) damit überhaupt nichts anfangen zu können, ich bekomme immer folgende Fehlermeldung:
/tmp/ccLcPKEm.o(.text+0x203): In function `main': : undefined reference to `Command::Command[in-charge](std::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned short, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >*)' collect2: ld returned 1 exit status
Das sieht so aus, als wäre der Konstruktor irgendwo nicht korrekt deklariert und/oder definiert - aber das kann nicht sein, ich jedenfalls sehe hier keinen Fehler:
C++: |
Command::Command(string in_name, unsigned short in_params, string in_helptxt, vector<string>* in_errormsgs) // Konstruktor { name = in_name; params = in_params; helptxt = in_helptxt; errormsgs = *in_errormsgs; }
|
- oder ist hier ausnahmsweise zwingend die Schreibweise mit Initialisiererliste erforderlich?
Bis bald im Khyberspace!
Yadgar -- Flagmaker - ein Programmier-Blog Dieser Post wurde am 28.01.2007 um 22:08 Uhr von Yadgar editiert. |