[英]Creating multiple Instances of Custom Class in C++
基本上說的是標題。 我有一個自定義命名類Color與此構造函數:
Color(component_t r, component_t g, component_t b) : r(r), g(g), b(b) {
}
我正在處理的“圖像”類的保護值已經為:Color *緩沖區我正在嘗試使用Color類的實例填充來自另一個float *數組的數據的此緩沖區。這是我的代碼:
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* buffer = new Color[width*height];
要只更改buffer
成員的值,您可以執行
buffer[k] = Color(r[k], g[k], b[k]);
無需分配新的Color
,您之前已經做了。
您可以執行類似的操作:這並不完美; 因為有顏色對象的副本; (但是如果您願意,也可以將其刪除),但這是向您展示使用向量可以對代碼執行什么操作的嘗試。
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);
您的buffer
包含Color
而不是Color*
。
以下應該工作:
Color** buffer = new Color*[width*height];
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.