从<t1>类型的对象创建<t>类型的对象的构造函数

时间:2017-01-29 14:09:17

标签: c++ templates constructor

我需要为我的类创建一个构造函数,它将同一类T1类的对象作为参数,并创建一个类型为T的对象。

编译器决定是否可以完成转换T1 -> T

例如:如果我有

Object<int> o; 
Object<double> o1(o);

这应该有效,因为它不会失去精确度。它不应该相反(在整数类型对象中复制double值)。 有人可以帮忙/告诉我怎么做吗?

1 个答案:

答案 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>"); 
    }
};