我有一个将2D数组作为成员的类。
int neighbourhood[30][5];
还有一个需要复制传入数组的类成员函数;
template <typename TwoDArray>
void set_neighbourhood(TwoDArray& nbh)
{
neighbourhood = nbh;
}
从代码中可以明显看出,已经有一个模板类型。为什么要使用模板?根据答案here
,传递良好的2D数组似乎很容易清理但是我收到一个L值错误,似乎这不是复制数组的正确语法。
肯定是我缺少什么。
答案 0 :(得分: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_是我的一些班级成员。另外,我采用了两种模板类型,而您似乎只需要担心一种。