C++ 无法使用const_cast将图像*[3]传递给const图像*[3]<;图像*[3]>;,选择?
我有一个函数,它接受指向图像的指针数组,这些图像将不会被修改,定义为:C++ 无法使用const_cast将图像*[3]传递给const图像*[3]<;图像*[3]>;,选择?,c++,arrays,casting,constants,C++,Arrays,Casting,Constants,我有一个函数,它接受指向图像的指针数组,这些图像将不会被修改,定义为: void processImg( const Image *myImgs[NUM_IMAGES] ); 我想传入一个非const类型。我希望需要这样做,但这是非法的(VS2010表示不允许): 我做错了什么?有没有可能像我的第一个定义一样,用常量图像*myImgs[NUM_图像]来完成这个定义?您想要: processImg(const_cast<const Image **>(imgsToProces
void processImg( const Image *myImgs[NUM_IMAGES] );
我想传入一个非const
类型。我希望需要这样做,但这是非法的(VS2010表示不允许):
我做错了什么?有没有可能像我的第一个定义一样,用常量图像*myImgs[NUM_图像]
来完成这个定义?您想要:
processImg(const_cast<const Image **>(imgsToProcess));
processImg(const_cast(imgsToProcess));
问题本质上是您的常量施法
没有施法到您想要的常量
:
processImg(const_cast<const Image **>(imgsToProcess));
processImg(const_cast(imgsToProcess));
问题本质上是,您的const\u cast
没有强制转换为const您可能希望将对象强制转换为传递给它的类型的const
版本。但这不是const\u cast
的工作原理。
相反,您需要指定对象应强制转换到的确切类型
所以如果你想
Image **
投靠
const Image **
写成
const_cast<const Image**>(imgsToProcess);
const_cast(imgsToProcess);
您可能希望将对象强制转换为传递给它的类型的常量版本。但这不是const\u cast
的工作原理。
相反,您需要指定对象应强制转换到的确切类型
所以如果你想
Image **
投靠
const Image **
写成
const_cast<const Image**>(imgsToProcess);
const_cast(imgsToProcess);
指针是否由函数修改?如果没有,则将其设置为const
:const Image*const myImgs[NUM\u IMAGES]
。也不要指望myImgs拥有特定数量的元素。就函数而言,它是一个指针。使用std::array
查找知道其大小的对象。额外常量的优点。我将检查NUM_IMAGES
元素是否为非空。指针是否被函数修改?如果没有,则将其设置为const
:const Image*const myImgs[NUM\u IMAGES]
。也不要指望myImgs拥有特定数量的元素。就函数而言,它是一个指针。使用std::array
查找知道其大小的对象。额外常量的优点。我将检查NUM_IMAGES
元素是否为非空,当然。。。用processImg的这个定义是没有办法做到的吗<代码>无效处理img(常量图像*myImgs[NUM_图像])代码>当然。。。用processImg的这个定义是没有办法做到的吗<代码>无效处理img(常量图像*myImgs[NUM_图像])代码>