저는 간단한 C++ 그리드 클래스를 구현하고 있습니다. 지원해야하는 함수 중 하나는 둥근 괄호를 통해 액세스 할 수 있으므로 mygrid (0,0)을 작성하여 요소에 액세스 할 수 있습니다. 나는() 연산자를 오버로드하고 오류 메시지가 나타납니다 : "할당에서 비 lvalue".할당에서 간단한 그리드 클래스, 비 lvalue를 만들려고합니다.
내가 할 수 있기를 원하는 :
//main
cGrid<cA*> grid(5, 5);
grid(0,0) = new cA();
발췌 그리드 클래스의 내 구현의 :
템플릿 클래스 cGrid 의 {
private:
T* data;
int mWidth;
int mHeight;
public:
cGrid(int width, int height) : mWidth(width), mHeight(height) {
data = new T[width*height];
}
~cGrid() { delete data; }
T operator()(int x, int y)
{
if (x >= 0 && x <= mWidth) {
if (y >= 0 && y <= mHeight) {
return data[x + y * mWidth];
}
}
}
const T &operator()(int x, int y) const
{
if (x >= 0 && x <= mWidth) {
if (y >= 0 && y <= mHeight) {
return data[x + y * mWidth];
}
}
}
나머지를 코드는 반복자의 구현을 다룬다.
변형 함수에 const로 표시하면 안됩니다. 그렇지 않으면 const cGrid를 사용하여 내용을 변경할 수 있습니다. – Bill