我需要为我的类创建一个构造函数,它将同一类T1
类的对象作为参数,并创建一个类型为T
的对象。
编译器决定是否可以完成转换T1 -> T
。
例如:如果我有
Object<int> o;
Object<double> o1(o);
这应该有效,因为它不会失去精确度。它不应该相反(在整数类型对象中复制double值)。 有人可以帮忙/告诉我怎么做吗?
答案 0 :(得分:4)
模板复制构造函数怎么样?
template<typename T>
class Object
{
template<typename U>
Object(const Object<U>& rhs)
: val(rhs.val()) // initialize appropirate members
{
// here you can assert what types U can be
static_assert(!(std::is_integral<T>::value &&
std::is_floating_point<U>::value),
"Can't construct Object<Integral> with Object<FloatingPoint>");
}
};