我在代码的这一部分标题中提到了错误。
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-&gt; setData(* buffer)或image-&gt; setData(&amp; buffer),但这也无效。如果有人知道如何解决这个问题,我会很感激。 提前谢谢。
答案 0 :(得分: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);
答案 1 :(得分:0)
您尝试将const指针指定给非常量指针
buffer[i] = data_ptr[i];
这是不允许的,因为这会违反data_ptr
上的const承诺。