不正な左オペランドを解決するには?

解決


Nightz  2005-06-09 10:24:23  No: 57786

私は今ゲームを創ろうとしてるんですが
MyCharというクラスを作り  publicメンバーにxやy等を入れています
そこで MyChar.cppにvoid CMyChar::HitCheck2Map()という関数を作り
自キャラが触れているマップチップの左上の座標が欲しいため
 HitMap[0].x = x - (x % 64);  ということをしています
(マップチップサイズが64です)
ビルドしてみると  「error C2296: '%' : 不正な左オペランドです」  というエラーが出て調べてみたのですが  「左オペランドが無効です」ということしか記述されていなくてよく解りません・・・
ちなみに float OffsetX = x % 64;とし  Hitmap[0].x = x -OffsetX;としようとしても  ↑の行で同じエラーが出てしまいました・・・


Blue  2005-06-09 10:39:09  No: 57787

xがdouble型やfloat型なのでエラーがでるのではないでしょうか?


Nightz  2005-06-09 10:39:12  No: 57788

すいません追記です  環境はVC6.0 WinXPです


Nightz  2005-06-09 10:40:32  No: 57789

レスありがとうございます。
しかしながらMyCharのxもOffsetXもfloatで宣言しています。


Blue  2005-06-09 10:42:58  No: 57790

float型(浮動小数点型)に%演算子は使えないのでは?
(余りというのがない)


Blue  2005-06-09 10:46:34  No: 57791

>HitMap[0].x = x - (x % 64);  
がなにをしたいのかよくわからないのですが
無理やりキャストするとか。(勿論小数点は切り捨てられるが(warning))
HitMap[0].x = x - ( static_cast< int >( x ) % 64 );


Nightz  2005-06-09 10:46:45  No: 57792

なるほど!! Blueさんありがとうございました。
OffsetX = (int)x % 64; にしたところ見事解決しました。
よくよく考えたらそうですよね・・。
くだらない質問に素早く親切に答えて頂いてありがとうございました。
また何かあれば聞きたいと思ってますのでよろしくお願いします〜。


PATIO  2005-06-10 01:47:54  No: 57793

解決になっていますけれど、
xとかyが仮に画面上の座標であると仮定するなら
floatにしなければならない意味が良くわからないのですけれど。
普通にlongでよいのではないでしょうか?
画面座標に浮動小数点型は必要ないと思いますけれど。


Nightz  2005-06-11 11:33:00  No: 57794

こんばんわ  わざわざレスありがとうございます
私はDirectXのテクスチャーを使って表示させています。
そのため
/* 頂点フォーマット */
typedef struct _D3DTLVERTEX_
{
  float x,y,z;
  float rhw;
  DWORD color;
  float tu0,tv0;  // テクスチャーを使うために使用
}D3DTLVERTEX;
このような感じの構造体を作って使っています。
DirectXの本を見ますとfloatが主みたい?なので・・やっているのですが
longでもいいのかなと・・・思ったり思わなかったり_|‾|○ ガクッ


PATIO  2005-06-13 19:55:09  No: 57795

DirectXが絡んでいたのですね。
処理上の利便性があるのであれば、それはそれで理由になると思います。
通常の画面上の座標計算だけの話であれば、longで大丈夫だと思うんですが、
DirectXの事情でそうなっているのであれば、気にしなくても良いのかな。
この辺はアプリを作る側の考え方一つだと思いますので現状はfloatでも
良いかと思います。


Nightz  2005-06-13 23:40:31  No: 57796

すいません  DirectXが絡んでると言ってませんでしたね。
気にして頂いてありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加