C++ 错误C2664:无法将参数1从';成像:组件&';至';常量成像::组件_t*&';

C++ 错误C2664:无法将参数1从';成像:组件&';至';常量成像::组件_t*&';,c++,c2664,C++,C2664,我有我在代码的这一部分的标题中提到的错误 component_t *buffer = new component_t[3 * width*height]; component_t getRawDataPtr(); ... for (unsigned int i = 0; i < width*height * 3; i = i + 3) { file.read((char *)cR, sizeof(char)); file.read((char *)

我有我在代码的这一部分的标题中提到的错误

component_t *buffer = new component_t[3 * width*height];
component_t getRawDataPtr();

...
    for (unsigned int i = 0; i < width*height * 3; i = i + 3) {
        file.read((char *)cR, sizeof(char));
        file.read((char *)cG, sizeof(char));
        file.read((char *)cB, sizeof(char));
        buffer[i] = cR / 255.0f;
        buffer[i + 1] = cG / 255.0f;
        buffer[i + 2] = cB / 255.0f;
    }
    file.close();

    image->setData(buffer);

...

void Image::setData(const component_t * & data_ptr) {
    if (height == 0 || width == 0 || buffer == nullptr)
        return;
    for (unsigned int i = 0; i < height*width * 3; i++)
        buffer[i] = data_ptr[i];
}
component_t*buffer=新组件[3*宽度*高度];
组件_t getRawDataPtr();
...
对于(无符号整数i=0;i设置数据(缓冲区);
...
无效图像::设置数据(常量组件和数据){
如果(高度==0 | |宽度==0 | |缓冲区==nullptr)
返回;
for(无符号整数i=0;i
我尝试了image->setData(*buffer)或image->setData(&buffer),但都不起作用。如果有人知道如何解决这个问题,我将不胜感激。 提前感谢。

您可以更改:

void Image::setData(const component_t * & data_ptr) {
致:

或:

您可以更改:

void Image::setData(const component_t * & data_ptr) {
致:

或:


您尝试将常量指针分配给非常量指针

buffer[i] = data_ptr[i];

这是不允许的,因为这将违反
数据\u ptr

上的常量承诺。您尝试将常量指针分配给非常量指针

buffer[i] = data_ptr[i];

这是不允许的,因为这将违反
data\u ptr

上的常量承诺。如果要将常量引用传递给指针,则指针的格式为
component\u t*const&
。并不是说通过引用传递是一个好主意。如果您想将常量引用传递给指针,请将其格式设置为
component\t*const&
。并不是说通过参考资料传递是个好主意。非常感谢这正是我想要的:D非常感谢这正是我想要的:D
buffer[i] = data_ptr[i];