浮動小数点に似た独自のデータ型(sfloat
)を定義しようとしていますが、データの範囲と精度に合わせて異なる仮数ビットと指数ビットを使用します。目標は、既存のアプリケーションでfloatを置き換えることができる新しいデータ型を定義することです。すべてのは、私がクラスのオーバーロード `unsigned`指定子
unsigned sfloat(3.141527)
はusfloat(3.141527)
、このクラスの符号なしのバージョンを返すようunsigned
演算子をオーバーライドするか定義することができなかったことを除いて、これまでのワークアウト。
unsigned
指定が VSのインテリセンスは、ヘッダファイルに文句を言っていないため、オーバーロードすることができるかもしれないように思え:
sfloat::sfloat(float f) { m_data = get16bit(f); }
operator unsigned() { /*Do stuff here */ };
しかし、それは宣言と初期化に取り組んでいない:
unsigned sfloat myPi= 3.141527; // Error: expected a ';'
C++でこれが可能かどうか分からないし、誰かがこれを前にしていたのか不思議ですね。
'unsigned'ありません' const'や 'volatile'のような修飾子。これは 'short'や' long'のような型名の不可分な部分です。 'unsigned'自体は' unsigned int'の同義語ですので、 'operator unsigned()'は単に 'unsigned int'にキャストする演算子です。 – Oktalist