テンプレート化された、変更したくないライブラリを使用しています。すなわちCImg。このライブラリは、単純な型のテンプレート (float、double、int など) で動作するように主に設計されています。
ある時点で、このライブラリは次のことを行います。
CImg<T>& fill(const T val) {
if (is_empty()) return *this;
if (val && sizeof(T)!=1) cimg_for(*this,ptrd,T) *ptrd = val;
else std::memset(_data,(int)val,size()*sizeof(T));
return *this;
}
このライブラリを、より複雑なクラスをテンプレート パラメータとして使用したいと考えています。私の特定のクラスはsizeof(T)!=1
、ほとんどの場合、fill
関数が適切なクラスval
の各要素に適切に割り当てられるようなoperator=
ものです。ただし、 の場合!val
、クラスを にキャストし、いくつかの値を生成できるようにする変換演算子が必要int
です (たとえば、0
上記の関数が機能するようになります)。
現在、私のプログラムは次のようにコンパイルされません。
error C2440: 'type cast' : cannot convert from 'const MyClass' to 'int'
上記の関数を変更せずに(int)my_variable
withmy_variable
型を有効にする演算子を作成するにはどうすればよいですか?MyClass