別の場所に保存されているデータを 2 次元画像として扱うためのテンプレート クラスがあります。
template <typename Pixel>
class ImageWin {
...
};
基になるイメージへの読み取り/書き込みアクセス用のイテレーターと、読み取り専用アクセス用の const_iterators があり、ご想像のとおり、const メソッドは const イテレーターを返し、非 const メソッドは非 const イテレーターを返します。型が constの場合、Pixel
すべてのイテレータは const イテレータです。
これによりImageWin<const int>
、const ImageWin<int>
非常によく似たタイプになります。どちらも同じ反復子 (定数反復子) のセットを持ちます。どちらも下にあるピクセルを変更することはできません。唯一の違いは、別のImageWin<const int>
場所を指すようにできることです (つまり、ウィンドウが指している場所は変更可能ですが、ピクセルはそうではありません)。
ピクセル データへの読み取りアクセスが必要な関数がある場合、次のように宣言できるようにしたいと考えています。
void needs_read_only( const ImageWin<int>& image );
問題は、ImageWin<const int>
それを渡す方法があるかどうかです。確かにテンプレート関数にすることもできますが、可能であればそれを避けようとしています。const をImageWin<Pixel>
暗黙的に に変換できるようにできると考えていましたが、 a はconst ピクセルのよりも制限的であるImageWin<const Pixel>
ため、実際には逆が必要です。一般に、const でない場合、ピクセルの const-ness に違反するため、変換可能にすることはできません。const ImageWin
ImageWin
ImageWin<Pixel>
ImageWin<const Pixel>
ImageWin<Pixel>
私が見逃しているトリックはありますか?
ありがとう。