Kein geeigneter Standardkonstruktor verfügbar [duplizieren]

8

Ich erhalte den folgenden Fehler in meinem C ++ - Programm:

%Vor%

Dies ist ein wenig im Fehler-Stack, zeigt aber auf diese Codezeile:

%Vor%

Der Grund ist, dass Timezone einen ziemlich komplizierten Konstruktor, aber keinen Standardkonstruktor hat. Hier ist dieser Teil des Fehlers:

%Vor%

1 & gt; c: \ Programme \ Microsoft Visual Studio 10.0 \ vc \ include \ map (210): Beim Kompilieren der Klassenvorlage member function 'Zeitzone & amp; std :: map & lt; _Kty, _Ty & gt; :: operator [] (const std :: basic_string & lt ; _Elem, _Traits, _Ax & gt; & amp;;)

Meine Frage ist, warum? Warum versucht die Karte, ein Timezone-Objekt zu erstellen? Warum sollte es auch nötig sein, wenn ich immer vollständig geformte Objekte in meine Karte lege? Vor allem, warum dieser Fehler beim Initialisieren der Karte?

    
Thom 04.11.2011, 17:31
quelle

2 Antworten

12

Sie verwenden wahrscheinlich die map s operator[] , die den Standardkonstruktor erfordert (wenn nicht, wie würde sie den Fall behandeln, in dem der Schlüssel nicht existiert) in der Karte?). Wenn Sie stattdessen insert verwenden, können Sie können können es nicht schaffen, einen zu liefern (ich kann mich nicht erinnern, ob der Standard einen Standardkonstruktor für alle Maps erfordert oder nur, wenn Sie diesen Operator verwenden) .

    
Mark B 04.11.2011, 17:36
quelle
1

Das Map-Objekt benötigt einen Standardkonstruktor, wenn Sie mit [] auf die Struktur zugreifen (meine vorherige Erklärung war so verworren, dass sie bedeutungslos war - tut mir leid). Siehe: Warum funktioniert das C ++? Das Argument map type erfordert einen leeren Konstruktor, wenn Sie []?

verwenden     
drdwilcox 04.11.2011 17:36
quelle

Tags und Links