重载括号操作符
Overloaded parenthesis operator
我正在使用EasyBMP库。我有一个返回BMP*
对象的函数。BMP对象重载了括号,我可以这样做:
BMP image;
*image(x,y)->Red=0;
但是现在我想返回一个指针,我想做:
BMP *image;
*image(x,y)->Red=0;
,但我得到一个错误,说图像不能用作一个函数。我该如何解决这个问题?
BMP* image = getimageptr();
*(*image)(x,y)->Red=0;
或者,也许更好:
BMP* image_ptr = getimageptr();
BMP& image = *image_ptr;
*image(x,y)->Red=0;
(顺便说一句,你真的在再次访问Red
之前取消对op()
返回的对象的引用吗?似乎很奇怪!)
问题是,在第二个例子中,image
的类型是BMP*
,而不是BMP
;由于operator()
在BMP
上重载,因此在使用调用操作符之前需要对指针解引用。
因此,我认为你需要使用:
*(*image)(x,y)->Red = 0;
我现在离编译器很远,所以如果我搞砸了,你必须原谅我。
请通读c++ FAQ #13.10。这个FAQ项目讨论了重载operator()
以用于矩阵。我相信这是你想做的。
FAQ还显示了如何使用操作符