テンプレートを使用して異なるサンプル タイプ間で変換したい
template<class T,class U>
void convert(const T* source, U* dest, size_t n)
{
do
{
double G=double(max(*dest))/max(*source);
T diff=max(*source) - min(*source);
*dest=U(makeUnsigned(*source - min(*source))*G/makeUnsigned(diff)
+makeUnsigned(max(*source) - *source)*double(min(*dest))/makeUnsigned(diff));
++dest;
++source;
--n;
}
while(n!=0);
}
今、自動生成されたマトリックスが欲しいので、
convert[from][to](source,dest,n);
各要素は正しいバージョンを参照しています。ここで関数ポインターをキャストする必要があることはわかっています (各要素は、とにかく同等の const void*,void* size_t を取る関数へのポインターである必要があります)。
それをしてもいいですか?