我正在使用EasyBMP库。我有一个返回BMP*
对象的函数。 BMP对象的括号重载,我可以这样做:
BMP image;
*image(x,y)->Red=0;
但是现在我正在尝试返回指针,我想这样做:
BMP *image;
*image(x,y)->Red=0;
但是我得到一个错误,说该图片不能用作函数。我该如何解决这个问题?
答案 0 :(得分:6)
BMP* image = getimageptr();
*(*image)(x,y)->Red=0;
或者,或许更好:
BMP* image_ptr = getimageptr();
BMP& image = *image_ptr;
*image(x,y)->Red=0;
(顺便说一句,你是否真的取消引用op()
返回的对象,然后再将其取消引用再访问以访问Red
?看起来很奇怪!)< / p>
答案 1 :(得分:3)
问题在于,在第二个示例中,image
的类型为BMP*
,而不是BMP
;由于operator()
上的BMP
重载,您需要在使用调用运算符之前取消引用指针。
因此,我认为你需要使用:
*(*image)(x,y)->Red = 0;
我现在远离编译器,所以如果我搞砸了你就不得不原谅我。
答案 2 :(得分:0)
请仔细阅读C++ FAQ #13.10。此FAQ项讨论了重载operator()
以与矩阵一起使用。我相信这就是你想要做的。
FAQ还显示了如何使用运算符。