基本上标题是什么。我有一个自定义命名类Color与此构造函数:
Color(component_t r, component_t g, component_t b) : r(r), g(g), b(b) {
}
The Class" Image"我工作的已经受到保护的值:Color * buffer 我试图用另一个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]);
}
然而在&amp;缓冲区[k] =新颜色(r [k],g [k],b [k])&#39;在for循环中,它给了我“没有操作符&#34; =&#34;匹配这些操作数,操作数类型是:Color = Color *&#39;
我做错了什么?
答案 0 :(得分:1)
这是你可以做的类似事情: 它并不完美;因为有一个颜色对象的副本; (但如果您愿意,也可以将其删除),但这是尝试向您展示使用向量可以对您的代码执行的操作。
std::vector<Color> buffer;
buffer.reserve(width*height);
int i = 0;
do {
float r = buff[i++];
float g = buff[i++];
float b = buff[i++]
buffer.push_back(Color(r,g,b));
} while (i < width*height);
答案 1 :(得分:0)
buffer
包含Color
不是Color*
。
以下内容应该有效:
Color** buffer = new Color*[width*height];