Operator overloading unter .net



  • In dem Zusammenhang (Tracking Handles) gibt es noch ein Problem.

    (.h)
    Test^ operator = (Test% x);
    (.cpp)
    Test^ Test::operator=(Test% x)
       {
       return this;
       }
    

    wird einfach ignoriert, wenn ich

    Test^ a = gcnew Test(dat);
    Test^ b = a;
    

    versuche. Der Code im Operator wird nicht ausgeführt und ich übergebe keine Kopie, sondern es ändert sich wirklich nur die Referenz.

    Ich hoffe mal, es sind wenigstens dumme Fragen, denn darüber war im Netz wenig zu finden.



  • 😕

    Du kannst schlecht den Operator= von Test^ überladen, sondern nur den von Test. Letzteren hast du zwar überladen, verwendest ihn aber nicht.

    Das, was du da gemacht hast wäre mit Zeigern entsprechend:

    Test* a = new Test(dat);
    Test* b = a;
    

    du willst

    Test^ a = gcnew Test(dat);
    Test^ b = gcnew Test();
    *b = *a;
    


  • Oh stimmt. Danke für die Klarstellung 🙂


Anmelden zum Antworten