在C ++中创建多个自定义类实例

时间:2017-11-27 14:47:52

标签: c++ arrays class ppm

基本上标题是什么。我有一个自定义命名类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;

我做错了什么?

2 个答案:

答案 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];