Ich habe eine Vorlagenklasse mit vielen Elementvariablen. Eine kleine Anzahl dieser Variablen hat den Schablonentyp der Klasse, die meisten haben feste Typen.Nur nicht-triviale Kopiervorgänge definieren
Ich möchte zwischen einer Instanz der Klasse zu einer anderen mit Konvertierungen kopieren, kann dies aber nicht mit impliziter Kopie tun, wenn die Klassen nicht den gleichen Typ haben. Daher brauche ich eine Zuweisungsmethode.
Allerdings ist es bedauerlich, alle diese vielen Kopiervorgänge ausschreiben zu müssen, nur um die gewünschte Konvertierung durchzuführen.
Gibt es also eine Möglichkeit, den Zuweisungsoperator so einzurichten, dass implizite Kopien nach Möglichkeit erstellt werden?
Ein Beispiel Code folgt:
#include <iostream>
template<class T>
class MyClass {
public:
int a,b,c,d,f; //Many, many variables
T uhoh; //A single, templated variable
template<class U>
MyClass<T>& operator=(const MyClass<U>& o){
a = o.a; //Many, many copy operations which
b = o.b; //could otherwise be done implicitly
c = o.c;
d = o.d;
f = o.f;
uhoh = (T)o.uhoh; //A single converting copy
return *this;
}
};
int main(){
MyClass<int> a,b;
MyClass<float> c;
a.uhoh = 3;
b = a; //This could be done implicitly
std::cout<<b.uhoh<<std::endl;
c = a; //This cannot be done implicitly
std::cout<<c.uhoh<<std::endl;
}