1

これは私の以前の質問のようなものです: C ++:Vector3タイプ "wall"?

ただし、今は、ユーザーが作成したタイプではなく、組み込みのタイプに対してこれを実行したいと思います。

したがって、floatと同じように動作するタイプ「Length」が必要です。ただし、コンストラクターを明示的にすることを除いて、Lengthオブジェクトを明示的に構築する必要があります(ランダムな変換が飛び交うのではありません)。

基本的に、私はタイプ・ア・ロットのキャンプに入ります。

4

2 に答える 2

3

他の質問のコメントで提案されているように、boost のユニットを使用できます。これは明示的で、なおかつ扱いやすいものでなければなりません。

于 2010-03-17T03:51:30.577 に答える
1

独自のクラスで float プリミティブをラップしたいようです。開始するための例を次に示します。

class Length
{
protected:
    float value_;
public:
    Length(float value) : value_(value) { }
    static Length operator +(Length a, Length b) { return Length(a.value_ + b.value_); }
    static Length operator -(Length a, Length b) { return Length(a.value_ - b.value_); }
    static Length operator *(Length a, Length b) { return Length(a.value_ * b.value_); }
    static Length operator /(Length a, Length b) { return Length(a.value_ / b.value_); }
};

しかし、ブーストユニットライブラリを使用することは、長期的にははるかに良い選択です...

于 2010-03-17T05:32:43.277 に答える