グレースケール画像を管理するクラスがあります。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です。私は疑問に思っています、これを行うのは安全ですか?