我有一個管理灰度圖像的類。我想用libpng保存它。要做到這一點我想用這樣的const
成員函數:用libpng保存圖像 - const對象
void GrayscaleImage::SavePNG(std::string filename) const
{
// ...
png_bytep* row_pointers = new png_bytep[m_height];
for (int i = 0; i < height_; i++) {
row_pointers[i] = const_cast<png_bytep>(m_data.data()) + i * m_width * sizeof(uint8_t);
}
png_set_rows(png_ptr, info_ptr, row_pointers);
// ...
}
的問題是,png_set_rows
第三個參數是非常量,所以我必須在某個時候使用const_cast
,如果我想成員函數GrayscaleImage::SavePNG
爲const
。我想知道,這樣做是否安全?
什麼是'png_ptr'和'info_ptr'? – japreiss 2012-07-06 13:33:48
@japreiss它們是libpng使用的某些結構的不透明指針。 – 2012-07-06 15:30:16