我有一个模板化的类,它有许多成员变量。少数这些变量具有类的模板类型,大多数具有固定类型。
我想通过转换将类的一个实例复制到另一个实例,但如果类的类型不同,则不能使用隐式副本。因此,我需要一种分配方法。
但是,为了完成我想要的转换,必须写出所有这些复制操作是不幸的。
因此,有没有办法设置赋值运算符,以便在可能的情况下完成隐式副本?
示例代码如下:
#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;
}
答案 0 :(得分:1)
有两种天真的方式: