Tracking Handles



  • Ich versuche, Objekte wirklich per Referenz (im c++'schen Sinne) zu übergeben. Nur mache ich da wohl etwas falsch oder verstehe den Sinn der Tracking Handles nicht ganz. Eigentlich gibt es ja schöne Beispiele auf MSDN (ein paar Dinge bleiben mir aber dennoch schleierhaft).

    ref class Test
    {
    Test(Obj^ o);
    Test(Obj% o);
    };
    

    Wenn ich nun ein Tracking Handle erstelle

    Test^ myObj = gcnew Test(x);
    Test^% myTH = myObj;
    Test^ myt = gcnew Test(myTH);
    

    error C2664: Konvertierung des Parameters 1 von 'Test ^' in 'cli::array<Type> ^' nicht möglich

    Das

    Test^ myt = gcnew Test(%myTH);
    

    ergibt noch zusätzlich

    error C3071: Der %-Operator kann nur auf eine Instanz einer Verweisklasse oder auf einen Werttyp angewendet werden.

    Weiss jemand, wie das geht?



  • Kleiner Nachtrag:

    Test^ myt = myTH;
    

    funktioniert. Nur wäre es schön, quasi-echte Referenzen auch an z.B. Konstruktoren übergeben zu können.

    Ist das unmöglich oder mache ich hier einfach wieder etwas falsch (ich denke mal, letzteres wird es sein)?


Anmelden zum Antworten