【发布时间】:2016-12-20 19:23:20
【问题描述】:
我有一个模板类 Array,它实现了一个二维数组。数组类包含一个重载的运算符 (),它返回对从零开始的位置(第 x 列,第 y 行)处的元素的引用:
const T & operator () (int x, int y) const {
size_t loc = y*width + x;
return *(buffer + loc);
}
我还有一个派生类图像,它表示 ppm 图像的通用数据容器。图像类包含一个 setPixel 方法,该方法设置 (x,y) 像素的 RGB 值:
void setPixel(unsigned int x, unsigned int y) {
size_t locpixel = y*width + x;
size_t componentofpixel = locpixel * 3;
(x, y) = 0;
(x, y) + 1 = 1;
(x, y) + 2 = 0;
}
所以当我编译时它在 setPixel 中显示一个错误,即表达式必须是可修改的 lValue。有什么方法可以在我的 setPixel 方法中使用操作符 () 来获取数组中的下一个元素?
【问题讨论】:
-
您希望
(x, y)打电话给您的operator ()吗? -
这就是我想做的事情
-
您需要一个实例来调用操作员。试试
(*this)(x, y) ...