2016-11-24 2 views
1

У меня есть ошибка, о которой я упоминал в заголовке в этой части моего кода.Ошибка 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-> УстановитьДанные (* буфер) или image-> УстановитьДанные (& буфер), но это не сработало. Если кто-нибудь знает, как это исправить, я был бы признателен. Спасибо заранее.

+1

Если вы хотите передать константу ссылки на указатель, его формат 'component_t * const &'. Не то, что переход по ссылке - отличная идея. –

ответ

0

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

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); 
+0

Огромное спасибо, что именно я хотел: D – Sakis95

0

Вы пытаетесь присвоить константный указатель на неконстантный указатель

buffer[i] = data_ptr[i]; 

Это не допускается, так как это нарушает бы константное обещание на data_ptr.

Смежные вопросы