Seltsame Begebenheit
-
Hallo,
ich habe folgendes Problem, welches mir eigtl. erst durch schlampiges Copy and Paste aufgefallen ist. Bei meiner Klasse Vektor gibt es einen KonstruktorVektor(int n);
in dem die Anzahl der gewünschten Vektorelemente übergeben wird und alle Elemente mit null initialisiert werden. Und jetzt zu meinem Problem:
Vektor vec(5); //funktioniert
vec = 60; //sollte doch eigtl. eine Fehlermeldung bringenAnstatt einer Fehlermeldung springt er aber in den Konstruktor und legt ein Objekt mit 60 Elementen an. Wie bitte kann man sowas vermeiden (.NET 2003) !!
Vielen Dank
Gruss CatDog
-
deklariere den Konstruktor als explicit:
class Vector { ... explicit Vector(int n); ... };Dann sind solche impliziten Umwandlungen ausgeschlossen, wenn du das wirklich willst, müsstest du dann
vec = Vector(60);schreiben.
-
hmm mach mal bitte
Vector data(-10);...
-
Der Zuweisungsoperator ist in jeder Klasse standardmäßig vertreten. Man muss nur
aufpassen, wenn in der Klasse mit dynamischen Speicher gearbeitet wird. Dann
muss man selbst den Zuweisungsoperator schreiben, sonst zeigen die beiden
Elemente auf den selben Speicher.