2 차원 매트릭스 템플릿 클래스 unsing std vectors를 만들려고 노력했습니다. 지금까지는 대부분의 훌륭한 기능들이 exepted으로 작동합니다. 하지만 접근 자나 getter 및 setter 함수를 작성하려고하면 몇 가지 문제가 발생합니다. 이 내 클래스의 기본 레이아웃 처음 :표준 벡터 템플릿 매트릭스
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를 시도하고 값을 할당하려고 할 때 같은 결과가 나타납니다.
먼저 멤버 변수'map'을 호출하지 마십시오. 이미'std :: map' 클래스가 있으며,'map'을 사용하면 혼란이 야기됩니다. 둘째, [mcve]하시기 바랍니다. – PaulMcKenzie
내 생각 엔 버그는'objxy'에 있지만, mvce는 없다고 ... –
그런데, 가능한 경우 벡터의 벡터를 피하십시오. 단일 벡터는 필요한 데이터를 쉽게 보유 할 수 있으며 훨씬 효율적이고 캐시 친화적입니다. –