グレースケール画像を管理するクラスがあります。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);
// ...
}
問題は、 の 3 番目の引数png_set_rows
が非 const であるためconst_cast
、メンバー関数を にしたい場合は、ある時点で使用する必要GrayscaleImage::SavePNG
があることconst
です。私は疑問に思っています、これを行うのは安全ですか?