【问题标题】:Copying a template type 2D array to a class member将模板类型二维数组复制到类成员
【发布时间】:2018-12-27 07:32:29
【问题描述】:
我有一个将二维数组作为成员的类。
int neighbourhood[30][5];
还有一个类成员函数,需要复制传入的数组;
template <typename TwoDArray>
void set_neighbourhood(TwoDArray& nbh)
{
neighbourhood = nbh;
}
从代码中可以明显看出,模板类型已经到位。为什么要使用模板?根据答案here
,通过二维数组似乎很容易和干净
但是我得到了一个 L 值错误,并且似乎这不是复制数组的正确语法。
我肯定错过了什么。
【问题讨论】:
标签:
c++
templates
multidimensional-array
【解决方案1】:
如果您还没有它,您可能需要为 = 运算符编写一个方法。下面是我最近写的一个例子。
例如,您需要在构造函数中编写
SingleLink& operator=(SingleLink);
然后是外部构造函数
template<typename K, typename V>
SingleLink<K,V>& SingleLink<K,V>::operator=(SingleLink sl){
swap(head_, sl.head_);
swap(tail_, sl.tail_);
return *this;
}
在我的例子中,head_ 和 tail_ 是我的一些班级成员。我还采用了两种模板类型,而您似乎只需要担心一种。