1人でゲームが作れるように修行します。2 (487レス)
1-

71
(1): 名前は開発中のものです。 [sage] 2010/09/04(土) 10:45:00 ID:BWH+wHQ4(1) AAS
>>69
69(1): SGGK ◆6pZCoAtaxk [sage] 2010/08/31(火) 23:49:31 ID:5x9cPfBx(1) AAS
ソースをコピーして数字を一個上げた名前に変更してから作業を始めようとしたけど早速悩む。
参考にした本はCで書いてるので、C++でオブジェクトを複数種類作っているようなプログラムにどうすれば使えるか思いつかない。
とりあえず、「C++、移動、クラス、ベクトル」で検索してみたけど、いまひとつ。
C++には、例えば ベクトル+ベクトルの結果がベクトルになるような意味を持てるように
 + の意味を定義しなおす機能があるようなので、これかなと思ったけど、あまりにも内容が難しいので、諦める。
次に考えたのは、例えば vector3.h のような名前でヘッダーファイルを作り、その中に

struct Vector3{
float x,y; //とりあえずz無し
};

と書いておいて、ベクトルの必要なクラスの定義があるヘッダーファイルに #include "vector3.h" すれば外部の関数扱いになってすべてのクラスから使えるんじゃないかなと思った。
確認のために#include "vector3.h"したあるクラスの定義の中で、
Vector3 POSITION_XY={1,1};
としてみたらエラーになるので真っ青になる。(他にもう方法が思いつかないから)
しかし、
Vector3 POSITION_XY;
と書き直したら、コンパイラが通った。
クラスの定義の中では初期値を書けないのをすっかり忘れていた。
思い出せたのは運が良かった。
> + の意味を定義しなおす機能があるようなので、これかなと思ったけど、あまりにも内容が難しいので、諦める。

class Vector3{
public:
float x;

Vector3(){}
Vector3(float x_) : x(x_){}
Vector3 operator+(Vector3 &obj){
return Vector3(x + obj.x);
}
};

class A{
public:
A(float x) : vec(x){}
Vector3 vec;
};

void main(){
A a(1),b(2);
a.vec = a.vec + b.vec;
cout << a.vec.x << endl;
}

こういう事?
operator+はその性質上、returnで新しいクラスを作る必要があるから処理速度の面で微妙
俺だったら使わない
1-
あと 416 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.018s