Zuweisungsoperator überladen



  • Hallo,

    ich habe eine Klasse die etwa so aussieht :

    class test
    {
      test &operator=(const test &t);
    
      private :
         int werte[100];
    }
    

    dafür möchte ich nun den Zuweisungsoperator = überladen.

    // Zuweisungsoperator
    test &test::operator=(const test &t)
    {
        int i=0;
        werte = new int [100] ;   -- hier liegt mein Problem 
        for (i=0;i<CODEWORD_LENGTH;i++)
        {
            werte[i] = t.werte(i);
        }
        return *this; 
    }
    

    Ich müsste wohl in meiner Klasse

    int *werte;
    

    gibts da ne möglichkeit wie ich das gemacht hab mit
    int werte[100], und dann trotzden noch neuen speicherplatz zu belegen `

    danke

    chris


  • Mod

    wenn du sowieso nur elementweise kopieren willst, brauchst du im Falle eines Arrays in der Klasse keinen eigenen Operator implementieren (also lass es besser), es sei denn, der Elementtyp könnte bei der Zuweisung eine Exception werfen und dein Operator sol Exception-sicher sein. Bei ints hast du da aber kein Problem.



  • Hallo

    Wenn du in jeder Instanz genau 100 Integers brauchst, must du doch gar nicht dynamisch Speicher reservieren. Das Kopieren der einzelnen Werte machst du doch schon, mehr ist dann nicht nötig. Das sollte übrigens auch der Standard-Zuweisungsop machen den der Compiler erstellt wenn kein manueller Op da ist.
    Wenn du wirklich ein dynamisches Array brauchst dann nimm gleich std::vector, dann kann der Compiler auch wieder einen passenden Op zusammenstellen.

    /Edit : zu spät

    bis bald
    akari


Anmelden zum Antworten