E2305 'klasse::'klasse' (''klasse'&) zum Kopieren eines Vektors nicht gefunden ODER klasse'::operator=('klasse'&) zum Kopieren eines Vektors nicht gefunden (C++)

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Compiler-Fehler und -Warnungen (C++) - Index

Enthält eine C++ Klasse 'klasse1' einen Vektor (Array) aus Klasse 'klasse2', und Sie wollen ein Objekt des Typs 'klasse1' aus einem anderen Objekt dieser Klasse erstellen, müssen Sie diesen Konstruktor verwenden:



 Klasse2::Klasse2(Klasse2&)



Dadurch können die Elemente des Vektors konstruiert werden.

Der Konstruktor, Kopierkonstruktor genannt, braucht nur einen Parameter als Referenz zu seiner Klasse.

Der Kopierkonstruktor wird üblicherweise automatisch vom Compiler geliefert.

Wenn Sie aber einen Konstruktor für die Klasse 'klasse2' definiert haben mit einem Parameter des Typs 'klasse2&' und mit zusätzlichen Parametern mit Voreinstellung, dann kann kein Kopierkonstruktor existieren oder vom Compiler erzeugt werden.

Der Grund dafür ist, dass die folgenden Deklarationen nicht unterschieden werden können:



 Klasse2::Klasse2(Klasse2&)
 Klasse2::Klasse2(Klasse2&, int = 1)



Sie müssen den Konstruktor so definieren, dass nicht alle Parameter Vorgabewerte haben.

Dann können Sie einen Referenzkonstruktor definieren oder vom Compiler erzeugen lassen.

Klasse::Operator= nicht gefunden ...

Enthält eine C++ Klasse 'klasse1' einen Vektor (Array) aus Klasse 'klasse2', und Sie wollen ein Objekt des Typs 'klasse1' kopieren, müssen Sie diesen Zuweisungsoperator verwenden:



 Klasse2::Klasse2(Klasse2&)



Dadurch können die Elemente des Vektors kopiert werden.

Normalerweise wird dieser Operator vom Compiler bereitgestellt.

Dies ist jedoch nicht der Fall, wenn Sie einen Operator = für die Klasse 'klasse2' definiert haben, der keinen Parameter des Typs 'klasse2&' übernimmt. In diesem Fall müssen Sie selbst einen solchen Operator zur Verfügung stellen.