Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/153.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 无法使用const_cast将图像*[3]传递给const图像*[3]<;图像*[3]>;,选择?_C++_Arrays_Casting_Constants - Fatal编程技术网

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_图像])