1

我有以下函数声明

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);

我试图做的是使函数的输入成为常量,这样它就不能在函数内部被修改,我认为将它声明为常量就可以了。我在这里想念什么?我正在考虑使用引用而不是指向指针的指针,但我感到困惑。所以两个问题:

  1. 我该如何解决这个错误?
  2. 使用引用而不是指向指针的 const 指针会更好吗?
4

1 回答 1

1

说这个:

typedef Color * ColorPtr;

ColorPtr input2quantize;

int vectorQuantization(ColorPtr const * input);

vectorQuantization(&input2quantize);

如果您愿意,您也可以将函数参数类型拼写为Color * const * input

请注意,这可以保护您不让函数更改指针,而不是指针,因为您有一个可变指针,所以无法保护它。如果你愿意,你需要一个单独的类型:

typedef Color const * SafeColorPtr;

SafeColorPtr safeinput = input2quantize;

int foo(SafeColorPtr const * pInput);

foo(&safeinput);
于 2013-05-10T10:54:34.077 回答