将模板类型2D数组复制到类成员

时间:2018-12-27 07:32:30

标签: c++ templates multidimensional-array

我有一个将2D数组作为成员的类。

int neighbourhood[30][5];

还有一个需要复制传入数组的类成员函数;

template <typename TwoDArray>
void set_neighbourhood(TwoDArray& nbh)
{
    neighbourhood = nbh;
}

从代码中可以明显看出,已经有一个模板类型。为什么要使用模板?根据答案here

,传递良好的2D数组似乎很容易清理

但是我收到一个L值错误,似乎这不是复制数组的正确语法。

肯定是我缺少什么。

1 个答案:

答案 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_是我的一些班级成员。另外,我采用了两种模板类型,而您似乎只需要担心一种。