Ошибка C2664: невозможно преобразовать аргумент 1 из 'imaging::component_t *' в 'const imaging::component_t *&'

У меня есть ошибка, о которой я упоминал в заголовке этой части моего кода.

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];
}

Я попытался image->setData(*buffer) или image->setData(&buffer), но это тоже не сработало. Если кто-нибудь знает, как это исправить, я буду признателен. Заранее спасибо.

2 ответа

Вы можете изменить:

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

чтобы:

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

или же:

image->setData(buffer);

в

const component_t *cbuffer = buffer;
image->setData(cbuffer);

Вы пытаетесь назначить константный указатель неконстантному указателю

buffer[i] = data_ptr[i];

Это не разрешено, потому что это нарушило бы data_ptr,

Другие вопросы по тегам