我想创建一个临时数组对象,数组的长度等于arr1和arr2的长度之和。我该怎么做?以下函数在类数组中声明为友元。
template<class T1, int l1>
array<T1, l1> operator +( const array<T1, l1> &arr1, const array<T1, l1> &arr2 )
{
int add= arr1.size()+ arr2.size();
array<T1, add> temp;
........
}
这里size((成员函数只是返回数据的长度。类声明为:
template<class T, int length>
class array
{
T *data{};
public:
//Overloaded assignment operator taking arr object as parameter
template<class T1, int l1>
array& operator=(const array<T1, l1> &arr_copy);
template<class T1, int l1>
friend array<T1, l1> operator +( const array<T1, l1> &arr1, const array<T1, l1> &arr2 );
....Constructors and member functions....
};
这应该在main((中起作用->
arr3 = arr1 + arr2;
有人知道该怎么办吗?这里返回类型解析程序的意义在哪里?
模板非类型参数应为constexpr值。
所以你可以做
template<class T1, int l1>
array<T1, l1 + l1> operator +( const array<T1, l1> &arr1, const array<T1, l1> &arr2 )
{
constexpr int add = l1 + l1;
array<T1, add> temp;
// ........
}