【发布时间】:2021-08-18 15:38:23
【问题描述】:
我在将类型名称相同但大小不同的模板类转换为相同的模板类时遇到问题。让我用代码解释一下:
template<typename T, int SIZE>
class Array
{
T aData[SIZE];
friend Array operator+(Array &arr1, Array &arr2);
};
这就是我所拥有的模板类。假设我已经超载了operator+。
所以这就是我想做的:
Array<double, 10> a1;
Array<double, 20> a2;
a1 + a2;
我知道a1 和a2 是不同的类。所以我的问题是,如何将a2 转换为Array<double, 10>?我想用一个构造函数来做到这一点,它接受Array<T, SIZE2> 的对象并返回Array<T, SIZE> 的对象。这是可行的吗?
更笼统地说:我想将Array<T, SIZE2> 转换为Array<T, SIZE> 的类。
【问题讨论】:
-
将
Array<double,20>转换为Array<double,10>意味着什么?当数组大小不同时,您要么丢失必须填充空白的信息。如果那是你真正想做的,你需要解释这种转换应该如何工作