【问题标题】: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_ 是我的一些班级成员。我还采用了两种模板类型,而您似乎只需要担心一种。

    【讨论】:

    • 是的,我必须为它写一个方法。这就是问题所在。
    猜你喜欢
    • 2020-06-02
    • 1970-01-01
    • 2021-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多