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

时间:2013-05-10 10:52:13

标签: c++ pointers image-processing reference

我有以下功能声明

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

我试图做的是使函数的输入保持不变,以便它不能在函数内修改,我认为将它声明为常量会使它成为常量。 我在这里错过了什么?我正在考虑使用引用而不是指针指针,但我感到困惑。所以有两个问题:

  1. 如何解决此错误?
  2. 使用引用而不是const指针指向是否更好?

1 个答案:

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