Problem mit erase
-
Hallo alle zusammen!
Diese Aufgabe habe ich schonmal im C++-Forum gestellt, bin dort aber nicht wirklich weiter gekommen. Evtl gibt's hier jemanden der mein Problem kennt:
Habe eine Klasse muster. Ist ziemlich komplex, deshalb hier nur ein Ausschnitt:
class muster { private: AnsiString Identnr; AnsiString Name; // weitere Elemente anderer Datentypen unter anderem weitere Klassen public: // Properties // Methoden... };In meinem Hauptprogramm wird ein Container dieser Klasse gefüllt:
vector<muster> musterliste; vector<muster>::iterator IterMuster; muster Winkelbau; for(....) { Winkelbau.Set... //usw. }Und schließlich am Ende des Programmes will ich diesen Container wieder leeren:
musterliste.erase(musterliste.begin(), musterliste.end());So kann man es in jedem STL-Tutorial und sonst wo nachlesen, aber es klappt leider trotzdem nicht. Folgender Fehler tritt immer auf:
[C++ Fehler] _algobase.h(145): E2328 Operatoren dürfen keine Argumente mit voreingestellten Werten haben
Der selbe Fehler tritt auch bei
musterliste.clear();auf!
Ist das vielleicht irgendwie Borland Compilerabhängig, oder mache ich was falsch? Bin dankbar für jeden Hinweis und Hilfestellung!
Jannika
-
Du scheinst auch ein Problem mit der BCB-Hilfe zu haben. Verwendest Du BCB6? Wenn ja, dann solltest Du Dir mal den aktuellen ServicePack 4
installieren.
In meiner Hilfe steht zu dem Fehler nämlich:BCB-Hilfe schrieb:
E2328 Klassen mit Eigenschaften dürfen nicht über ihren Wert kopiert werden
Die Fehlermeldung, die Du bekommst, hat bei mir die Nummer E2327.
Gruß,
Alexander
-
Ja, ich verwende den BCB6 und bei der Kurzbeschreibung kommt der schon beschriebene Fehler, bei Drücken von F1 bei markiertem Fehler kommt diese Beschreibung!
E2328 Klassen mit Eigenschaften dürfen nicht über ihren Wert kopiert werden Compiler-Fehler
Dieser Fehler tritt auf, wenn Sie versuchen, den Standardzuweisungoperator zu verwenden. Der folgende Code für zwei Labels auf einem Formular erzeugt beispielsweise diesen Fehler:*Label1->Font = *Label2->Font;
template <class _RandomAccessIter, class _OutputIter, class _Distance> inline _OutputIter __copy(_RandomAccessIter __first, _RandomAccessIter __last, _OutputIter __result, const random_access_iterator_tag &, _Distance*) { for (_Distance __n = __last - __first; __n > 0; --__n) { :arrow: *__result = *__first; ++__first; ++__result; } return __result; }Und zwar genau beim Pfeil!
Aber schlauer bin ich daraus auch nicht geworden!
-
Und wie wäre es, wenn Du mal anstatt
vector<muster> musterliste;vector<muster*> musterliste;verwendest? So verwende ich bei mir Vektoren mit Klassen und habe keine Probleme damit.
Oder hast Du das schon mal ausprobiert?Gruß,
Alexander
-
Hallo Alexander!
Nein, habe ich so noch nicht gesehen! Werde es gleich mal ausprobieren und melde mich dann nochmal ob sich was verändert hat!
Danke!
Jannika