1人でゲームが作れるように修行します。2 (487レス)
上下前次1-新
抽出解除 レス栞
リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
92(2): SGGK ◆6pZCoAtaxk [sage] 2010/09/18(土) 01:00:44 ID:wU0YURT9(1) AAS
ありがとうございます。今日は調べるだけで終了でした…。
>>88
たしかにバグの原因がCとC++の違いだと思い込んでしまうと他の原因の可能性を見落としやすくなりそうなので気をつけます。
>>89
今のソースではベクトル関係がクラスでなく構造体で表現されていてコンストラクタについてはまだ考えてませんでした。
バグが結局取り切れなかった場合、勉強しなおしてベクトル関係もクラス化する最終手段に挑戦してみようと思います。
>>90
コンストラクタの定義はしてないのですが、何故かエラーになってしまうので、
今は以下に書くとりあえず的なやり方でエラーを回避してます。
>>91
「構造体の初期化」で検索したところ、とあるサイトにそのような感じの
「構造体変数の初期化は、変数の宣言時には常に行うことが出来る点に注意しよう。」とあり、これを参考に以下のようにしてます。
ベクトル関係のヘッダファイルで
struct Vector3{float x,y,z;};
あるオブジェクトの初期化用関数の内部では昨日のやり方から少し変更して、
Vector3 a1={848,544,0};
fp.xy(←これは昨日書いていたオブジェクト.構造体変数名の事)=a1;
と書いてもバグが出ないのでこれでやってみようと思います。
今日は調べただけなので、バグは減ってないけど、全部取れるまで頑張ってみます。
93(1): 名前は開発中のものです。 [sage] 2010/09/18(土) 01:45:54 ID:ZJvrb5gA(1/3) AAS
>>92
>ベクトル関係もクラス化する最終手段に挑戦してみようと思います。
>>87は自分で書いててよく分かってないみたいだけど、classとstructは根本的には同じもの
struct Vector3{
Vector3(float x_, float y_, float z_): x(x_), y(y_), z(z_){}
float x,y,z;
};
void main(){
Vector3 a(1,2,3);
cout << a.x << " : " << a.y << " : " << a.z << endl;
a = Vector3(4,5,6);
cout << a.x << " : " << a.y << " : " << a.z << endl;
}
94(1): 名前は開発中のものです。 [sage] 2010/09/18(土) 01:56:17 ID:ZJvrb5gA(2/3) AAS
>>92
>Vector3 a1={848,544,0};
>fp.xy(←これは昨日書いていたオブジェクト.構造体変数名の事)=a1;
ちょっとこのレスで、代入のコストが気になったんで検証してみた
struct A{
A(){}
A(int x_, int y_, int z_): x(x_), y(y_), z(z_){}
int x,y,z;
};
struct B{
B(){}
B(int x_, int y_, int z_): x(x_), y(y_), z(z_){}
int x,y,z;
void operator=(B &val){
x=val.x; y=val.y; z=val.z;
}
};
AとBの違いはoperator=を使用してるかどうかだけ
A a,b;
a = b;
こんな感じでただ代入するだけの式を、それぞれ100万回ずつ実行
結果は予想外にもBの方が7倍も遅かった(単位はミリ秒)
A 5
B 35
そこで試しに、構造体に「double a[256];」を追加して実行
今度はBは変わらず、Aが極端に遅くなった
A 255
B 36
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.025s