我需要为我的类创建一个构造函数,该构造函数将与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/