没有调用const指针到指针的匹配函数

No matching function for call : const pointer to pointer

本文关键字:指针 函数 调用 const      更新时间:2023-10-16

我有以下函数声明

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指针指向指针?

说:

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