Metasequoia BBS

| 新規投稿 | 通常表示 | ツリー表示 |
状態
タグ
キーワード
[1449] 単項演算子のオーバーロード / sygh
[SDK] 返信
お世話になっております。
SDK Rev2.46付属のMQPlugin.hで定義されているMQPointやMQCoordinate
などに関してなのですが、単項の+演算子と-演算子がオーバーロードされてない
ようです。
今のところ自前で別ファイルに

inline MQPoint operator + ( const MQPoint& p )
{
  return p;
}

inline MQPoint operator - ( const MQPoint& p )
{
  return MQPoint( -p.x\x2c -p.y\x2c -p.z );
}

のように記述しているのですが、できれば次VersionのSDKでは
デフォルトで対応していただけますでしょうか?
単項+はともかく単項-が無いと、例えば変数xの符号を反転させるとき
「-x」でなく「-1.0f*x」としないといけないので……
2008-08-16 02:10
[1508] Re: 単項演算子のオーバーロード / O.Mizno
Rev2.49(pre)で対応しました。
2008-09-28 22:22
[1619] Re: Re: 単項演算子のオーバーロード / mqdl
>Rev2.49(pre)で対応しました。

この件、更新案内に記載して頂けると助かります。
過去のSDKを使用したソースと互換性が損なわれている為です。
#この箇所の更新に気がつかずに私はかなりハマりました。

例えば以前のSDKの場合
MQPoint a = MQPoint(0\x2c0\x2c1);
MQPoint b = MQPoint(1\x2c1\x2c1);
MQPoint p = a-b;
この結果は(-1\x2c-1\x2c0)になります。
2.49では(-1\x2c-1\x2c-1)になります。

オーバーロードの使用はソフト毎に違うと思いますので、
正誤を問うつもりは無いのですが、
inline MQPoint operator - (void) const {return MQPoint(-x\x2c-y\x2c-z);}

こちらの方が良い気がします。
2009-01-25 21:05
[1630] Re: Re: Re: 単項演算子のオーバーロード / sygh
私の提示したコードは構造体MQPointの外で定義されるグローバル演算子オーバーロードでしたので、
mqdl様の指摘された問題は発生していなかったのですが、構造体のメンバとして定義すると
挙動が変わることは未検証でした。

関係者の皆様にご迷惑をおかけして、申し訳ありません。

変更依頼をお願いする前にこちらでも十分検証するべきでした。


ちなみにD3DXなどのメジャーなライブラリでもmqdl様の提示された形で実装されていました。

私としては、なるべく早いうちに修正していただきたいと思っているのですが、いかがでしょうか?
2009-02-06 02:01
[1632] Re: Re: Re: Re: 単項演算子のオーバーロード / O.Mizno
あまり深く考えずにコードを挿入し、動作チェックも不十分だったので
意図しない動作になることに気づいていませんでした。

Rev2.49bで修正しました。
2009-02-11 16:59
[1633] Re: Re: Re: Re: Re: 単項演算子のオーバーロード / mqdl
>あまり深く考えずにコードを挿入し、動作チェックも不十分だったので
>意図しない動作になることに気づいていませんでした。
>
>Rev2.49bで修正しました。

ご対応有難う御座いました。
2009-02-11 17:29