1

2D ベクトル操作を処理する Vec2D というクラスがあります。

   Vec2D pos1 = Vec2D( 100, 100 );
   Vec2D pos2 = Vec2D( 100, 100 );

演算子をオーバーロードしているため、算術演算がより簡単になります。したがって、次のことができます。

Vec2D difference = pos1-pos2;
float distance = difference .magnitude(); 

のクラスでこのような算術演算を行うことは可能ですか?:

float distance = (pos1-pos2).magnitude();

コンパイルしてみましたが、「クラス Vec2D には反復子がありません...」などの奇妙なエラーが表示されます。これを説明できる唯一の理由は、結果にクラスが存在しないという事実です。

4

1 に答える 1

1

ここでの問題は、おそらく-オペレーターの実装方法にあります。プロトタイプは次のようになります。

Vec2D operator- (const Vec2D &rhs) const

または授業外

Vec2D operator- ( const Vec2D& v1, const Vec2D& v2 )

演算子はどのように宣言されていますか? 特に - 操作の戻り値の型は何ですか?

于 2013-01-03T05:47:34.823 に答える