c++ - 将 Image*[3] 传递给 const Image*[3] 不能用 const_cast<Image*[3]> 完成,替代方案?

标签 c++ arrays casting constants

我有一个函数,它接受一组指向不会被修改的图像的指针,定义为:

void processImg( const Image *myImgs[NUM_IMAGES] );

我想传入一个非const 类型。我希望需要这样做,但这是非法的(VS2010 说不允许):

Image *imgsToProcess[NUM_IMAGES];
// ...fill in imgsToProcess

processImg( const_cast<Image*[NUM_IMAGES]>(imgsToProcess) );

我也试过:

processImg( const_cast<Image*[]>(imgsToProcess) ); //'const_cast' : cannot convert from 'Image *[3]' to 'Image *[]'
processImg( const_cast<Image**>(imgsToProcess) ); //'processImg' : cannot convert parameter 1 from 'Image **' to 'const Image *[]'

然后我更改了函数和数组定义并做了:

void processImg( const Image **myImgs, int numImages );
...
Image **imgsToProcess;
// ...fill in imgsToProcess

processImg( const_cast<Image**>(imgsToProcess), NUM_IMAGES );

令我惊讶的是,我仍然收到此错误消息:

'processImg' : cannot convert parameter 1 from 'Image **' to 'const Image **'

我做错了什么,是否有可能像我的第一个定义那样用 const Image *myImgs[NUM_IMAGES] 来完成这个?

最佳答案

你想要:

    processImg(const_cast<const Image **>(imgsToProcess));

问题本质上是您的 const_cast 没有转换为 const

关于c++ - 将 Image*[3] 传递给 const Image*[3] 不能用 const_cast<Image*[3]> 完成,替代方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28442684/

相关文章:

c++ - 增量运算符/迭代器实现

c++ - Qt5 - 未找到 Windows : VCRUNTIME140D_APP. dll

c++ - AMD GPU 在 OpenGL 3.3 中可以绘制的顶点数是否有最大限制?

Java 数组[i]++ 与++数组[i]

c++ - 我们有一个 vector ,但不清楚调用哪个构造函数

arrays - 如何从数组制作图形?

javascript - 检查数组中的空数

java - 强制转换是否会在运行时更改声明/引用类型?

c++ - 摆脱 "warning C4267 possible loss of data"的最佳策略是什么?

javascript - typescript 键盘事件 : argument of type 'Event' is not assignable to parameter of type 'KeyboardEvent'