[英]No matching function for call : const pointer to pointer
我有以下函数声明
int vectorQuantization(const Color **input, Color **output,
const int rows, const int cols, const int numColors);
当我尝试从主函数调用它时,出现错误“没有匹配函数来调用'VectorQuantization'”。
Color *input2quantize;
Color *outputQuantized;
...
...
vectorQuantization(&input2quantize, &outputQuantized, rows, cols, 10);
我试图做的是使函数的输入成为常量,这样就不能在函数内部对其进行修改,而且我认为将其声明为常量将使它成为常量。 我在这里想念什么? 我当时在考虑使用引用而不是指针指针,但是我很困惑。 有两个问题:
说这个:
typedef Color * ColorPtr;
ColorPtr input2quantize;
int vectorQuantization(ColorPtr const * input);
vectorQuantization(&input2quantize);
如果愿意,您也可以将函数参数类型拼写为Color * const * input
。
请注意,这可以防止函数更改指针 ,而不能更改pointee ,因为有可变的指针,所以不能保护pointee。 如果需要,您需要一个单独的类型:
typedef Color const * SafeColorPtr;
SafeColorPtr safeinput = input2quantize;
int foo(SafeColorPtr const * pInput);
foo(&safeinput);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.