2017-03-29 20 views
-1

我tryed使2D矩阵模板类unsing STD载体。到目前为止,大多数功能都如期工作。但是,当我尝试编写accessor或getter和setter函数时,我遇到了一些问题。 起初,这个我班的基本布局:与STD向量模板矩阵

template <class T> 
class DynamicMatrix 
{ 
private: 
    vector<vector<T>> map; 
... 
} 

我第一次尝试是访问函数:

template <class T> 
T& DynamicMatrix<T>::at(size_t x, size_t y) 
{ 
    return(map.at(x).at(y)); 
} 
template <class T> 
const T& DynamicMatrix<T>::at(size_t x, size_t y) const 
{ 
    return(map.at(x).at(y)); 
} 

,但是当我尝试调用gameMap.at(X,Y)= objxy;编译器说它是一个被删除的函数。

所以我尝试了getter和setter,并试图分配一个值时得到相同的结果。

+0

首先,不要打电话给你的成员变量'map'。已经有一个'std :: map'类,使用'map'只会导致混淆。其次,请[mcve]。 – PaulMcKenzie

+0

我猜这个错误是在'objxy'中,但没有mvce ... –

+0

顺便说一句,如果可以的话,避免向量载体。单个矢量可以轻松容纳您需要的数据,并且效率更高且缓存更友好。 –

回答

0

你没有提到什么T在你的gameMap,但我想它没有可访问的拷贝构造函数,因此指定objxy失败。

+0

谢谢你的回答,的确,“objxy”没有拷贝构造函数,我完全忘了写一个,因为它里面有一个数组(看起来我需要学习基本的agan:D)。写完拷贝构造函数和操作符后=错误消失。 – Mazzelfassel