Gast
2006-07-05, 11:55:40
Ich bin gerade dabei, eine Managed Klasse zu schreiben, die einen Kopierkonstruktor enthalten soll. Auf den ersten Blick scheint .NET ja eine hervorragende Unterstützung hierfür anzubieten, mittels der Methode System::Object::MemberwiseClone(), die ein bequemes Erzeugen einer Objektkopie gestattet. Ich habe dann mal folgendes versucht:
public ref class EvilEnemy
{
// Copy-Konstruktor
EvildEnemy(EvilEnemy^ src);
//...
};
//...
EvilEnemy::EvilEnemy(EvilEnemy^ src)
{
this = (EvilEnemy^) src->MemberwiseClone();
}
aber da bekomme ich die Fehlermeldung, this sei kein L-Value. Kann es sein, daß .NET den Zuweisungsoperator für den this-Pointer nicht mehr unterstützt?
Ich habe das jetzt so gelöst, daß ich auf einen Copy-Konstruktor verzichte, und stattdessen eine statische Copy-Methode benutze:
public ref class EvilEnemy
{
//...
static void Copy(EvilEnemy^ dest, EvilEnemy^ src)
{
dest = (EvilEnemy^) src->MemberwiseClone();
}
};
aber besonders elegant erscheint mir das nicht. Es kann doch nicht sein, daß .NET keine Copy-Konstruktoren erlaubt (ohne daß man die Member alle von Hand einzeln kopieren muß)???
public ref class EvilEnemy
{
// Copy-Konstruktor
EvildEnemy(EvilEnemy^ src);
//...
};
//...
EvilEnemy::EvilEnemy(EvilEnemy^ src)
{
this = (EvilEnemy^) src->MemberwiseClone();
}
aber da bekomme ich die Fehlermeldung, this sei kein L-Value. Kann es sein, daß .NET den Zuweisungsoperator für den this-Pointer nicht mehr unterstützt?
Ich habe das jetzt so gelöst, daß ich auf einen Copy-Konstruktor verzichte, und stattdessen eine statische Copy-Methode benutze:
public ref class EvilEnemy
{
//...
static void Copy(EvilEnemy^ dest, EvilEnemy^ src)
{
dest = (EvilEnemy^) src->MemberwiseClone();
}
};
aber besonders elegant erscheint mir das nicht. Es kann doch nicht sein, daß .NET keine Copy-Konstruktoren erlaubt (ohne daß man die Member alle von Hand einzeln kopieren muß)???