我有以下功能声明
int vectorQuantization(const Color **input, Color **output,
const int rows, const int cols, const int numColors);
当我尝试从我的main函数调用它时,我收到错误“没有匹配函数来调用'VectorQuantization'”。
Color *input2quantize;
Color *outputQuantized;
...
...
vectorQuantization(&input2quantize, &outputQuantized, rows, cols, 10);
我试图做的是使函数的输入保持不变,以便它不能在函数内修改,我认为将它声明为常量会使它成为常量。 我在这里错过了什么?我正在考虑使用引用而不是指针指针,但我感到困惑。所以有两个问题:
答案 0 :(得分:1)
说出来:
typedef Color * ColorPtr;
ColorPtr input2quantize;
int vectorQuantization(ColorPtr const * input);
vectorQuantization(&input2quantize);
如果您愿意,也可以将函数参数类型拼写为Color * const * input
。
请注意,这可以防止您使用该函数更改指针,而不是 pointee ,因为您有一个可变指针,因此无法保护它。如果您愿意,您需要一个单独的类型:
typedef Color const * SafeColorPtr;
SafeColorPtr safeinput = input2quantize;
int foo(SafeColorPtr const * pInput);
foo(&safeinput);