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 Konstruktor

    Vektor(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 bringen

    Anstatt 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.


Anmelden zum Antworten