Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Problem mit Initialisierung eines Arrays von Klasseninstanzen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
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.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
28.01.2007, 22:11 Uhr
Blubber2063



Da fallen mir ohne deinen Code genauer zu sehen 2 Fragen ein.

1. Hast du alle Module compiliert und beim linken mit angegeben ?

2. Hast du einen DefaultKonstruktor ?(Denn wenn du einen Array initialisiert, dann wird immer der default Construktor aufgerufen, es sei denn du hast ihn explicit anders angegeben, wobei ich mir da nicht sicher bin das es anders geht, da ich das noch nicht probiert habe.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
04.02.2007, 04:10 Uhr
~MartinF
Gast


Hallo zusammen,

ich gehe stark davon aus, dass die Definition des Konstruktors inkorrekt ist. Seine Deklaration wirkt auf den ersten Blick richtig. Wo ist die Implementierung? Befindet diese sich in einer anderen Datei oder wurde sie einfach vergessen?

Ggf.

C++:
      Command(string in_name, unsigned short in_params,
          string in_helptxt, vector<string>* in_errormsgs) {} // Konstruktor


schreiben

Grüße
Martin
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: