我在c ++中有一个带有命名空间和类中的头文件
namespace imaging{
class Image
{
// to index individual channels
protected:
Component * buffer; // Holds the image data
Image(unsigned int width, unsigned int height, const Component * data_ptr, bool interleaved=false);
}
}
当我尝试实现构造函数时,我得到一个错误,无法将类型的值赋给类型的实体。
#include Image.h
namespace imaging
{
Image::Image(unsigned int width, unsigned int height, const Component * data_ptr, bool interleaved=false)
{
this->height=height;
this->width=width;
buffer=data_ptr; // The error is here!!
}
}
答案 0 :(得分:0)
data_ptr
为const Component *
而Image::buffer
为Component *
通过影响第一个到第二个,您将丢弃const
。该属性的重点是保护数据,应该通过简单的转换来删除它。
您可以编辑构造函数参数的类型以删除const
或使用
buffer=const_cast<Component*>(data_ptr);
无论如何,请考虑您想要的行为。指针是const是否有任何感觉(它不是参考)?