2017-03-29 88 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