使用代码:
template <typename T>
class MyClass
{
public:
MyClass(const MyClass& other)
{
//Explicit, types must both match;
}
template <typename U>
MyClass(const MyClass<U>& other)
{
//Implicit, types can copy across if assignable.
//<?> Is there a way to make this automatically happen for memberwise
//copying without having to define the contents of this function?
this->value = other.getValue();
}
privte:
T value;
};
以下情况属实:
MyClass<float> a;
MyClass<float> b = a; //Calls explicit constructor which would have been auto-generated.
MyClass<int> c;
MyClass<float> d = c; //Calls implicit constructor which would not have been auto gen.
我的问题是:有没有办法获得这样的隐式复制构造函数,但不必定义它是如何工作的?默认情况下创建一个类时,都会提供复制,赋值和标准构造函数...如果可能的话,在使用模板时能够获得一个隐式转换构造函数会很好。
我猜它不可能但有人可以解释为什么如果是这样的话对我来说呢?
谢谢!
答案 0 :(得分:1)
您不能让编译器为您生成伪拷贝构造函数模板。为什么?因为MyClass<T>
可以是 完全 ,与MyClass<U>
不同
这不是我原来的答案。我误解了这个问题,对不起