我繼承了一個管理RGB圖像的類的項目,其主要組件是數據類型爲RGBPixel
(簡化版本在下面給出)的可變大小數組。它包含許多基本上是界面的方法 - 例如方法Operate
,其循環所有像素並調用類別RGBPixel
的某種方法。C++引用基類的子類指針屬性
我現在需要使用不同類型的像素處理圖像(我們稱它們爲NewPixel
和NewImage
)。接口類型的方法與RGBImage
相同,但不是所有的方法都是像素級的接口(例如在圖像類型之間轉換或從磁盤讀取)。
我顯然不想加倍我的代碼。我覺得我需要一個模板類和一個基類的組合(它們都會繼承,但我沒有線索如何去做這件事)(我一直在絞盡腦汁讀書網頁幾天了)。
class RGBImage {
public:
RGBImage::RGBImage(int w, int h) {
_width = w;
_height = h;
_pixels = new RGBPixel[w*h];
}
RGBImage::~RGBImage() { _pixels = NULL; }
void RGBImage::Operate(int val) {
for (int i = 0; i < _width*_height; i++)
_pixels[i].Operate(val);
}
void RGBImage::RGBSpecific() {
bla bla bla
}
private:
int _width, _height;
RGBPixel* _pixels;
};