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

编译器是决定是否可以转换T1 -> T的编译器。

例如:如果我有

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


这应该起作用,因为它不会失去精度。它不应该反过来工作(在整数类型的对象中复制双精度值)。
有人可以帮助/告诉我该怎么做吗?

最佳答案

模板副本构造函数如何?

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

关于c++ - 从类型<T1>的对象创建类型为<T>的对象的构造函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41921784/

10-12 13:21