【发布时间】:2017-11-27 14:47:51
【问题描述】:
基本上就是标题所说的。我有一个带有这个构造函数的自定义命名类 Color:
Color(component_t r, component_t g, component_t b) : r(r), g(g), b(b) {
}
我正在处理的“图像”类已经有一个受保护的值:颜色*缓冲区 我正在尝试用另一个 float* 数组中的数据填充 Color 类的实例。这是我的代码:
Color* buffer = new Color[width*height];
float* r = new float[width*height];
float* g = new float[width*height];
float* b = new float[width*height];
int i = 0;
do {
r[i] = buff[i];
i++;
g[i] = buff[i];
i++;
b[i] = buff[i];
i++;
} while (i < width*height);
for (int k = 0; k < width*height; k++) {
buffer[k] = new Color(r[k], g[k], b[k]);
}
但是,在 for 循环内的 'buffer[k]=new Color(r[k],g[k],b[k])' 行中,它给了我 'no operator "=" 匹配这些操作数,操作数类型为:Color=Color*'
我做错了什么?
【问题讨论】:
-
除了使用原始指针吗? ;) {尽可能使用智能指针;或 std::vector 你在做什么!}
-
buffer[k]是颜色类型,如错误消息所述。为什么 ypu 使用 new 呢? -
g[i] = buff[i];?你不认为你需要两个不同的索引吗?你给 r[0], g[1], b[2] 赋值。 -
使用指针和new,不使用std::vector。