dxlibを使ってc++でヘッダーとソースファイルで定義と宣言を分けていて
どっちでもいい場合についてどう処理が変わるか知りたくて質問しました。
////////////コメント部の
クラスの変数を初期化するときに
下記の2番目は代入と初期化どっちなのか知りたい。
1,コンストラクタ内で初期化するべきなのか 代入
2,変数宣言時に同時に初期化するべきなのか? ←これは代入なのか初期化なのか知りたいです。
3,コンストラクタで:a(0) のように初期化するべきなのか 初期化?
その処理の違いを知りたいです。
またメンバ関数の外で一時変数を書く時はどうしたらいいの知りたいです
面倒ですが全てヘッダーに書いたほうがいいのかソースファイルでstaticをつけるとそのソースファイルだけで使えるのでそうするのか
どうなのか知りたいです。
※なおLoadDivGraphなどのDxlib関数は関係なので無視し構いません。
#ifndef ___PLAYER_H #define ___PLAYER_H #include "Chr.h" class Player : Chr { private: position pos; int g_handle[8];//画像格納ハンドル /*座標の取得と設定*/ void Chr::sPos_x(int xx); void Chr::sPos_y(int yy); int Chr::gPos_x(); int Chr::gPos_y(); void input_key();//キー入力 void gravity(); const int jump_max = 50;//ジャンプ最大値//////////////////////// public: Player(const char* str,int xx,int yy); void Chr::Update(); void Chr::Draw_Update(); }; #endif
#include "Input.h" #include "Player.h" #include "DxLib.h" /*コンストラクタ*/ Player::Player(const char* str,int xx,int yy) { LoadDivGraph(str,7,7,1,64,64,g_handle); pos.x = xx;//////////////// pos.y = yy;/////////////// } /*計算更新*/ void Player::Update() { input_key(); //gravity(); } /*描画更新*/ void Player::Draw_Update() { DrawFormatString(100,100,GetColor(255,255,255),"Debug"); DrawGraph(gPos_x(), gPos_y(), g_handle[0], true); } static int j = 10;///////////////// static int n = 30;//////////////// /*キー入力*/ void Player::input_key() { if (keybord(KEY_INPUT_LEFT) > 0) { sPos_x(-5); } if (keybord(KEY_INPUT_RIGHT) > 0) { sPos_x(+5); } /*ジャンプ*/ if (keybord(KEY_INPUT_SPACE) > 0) { n = (n - 2); if (n <= 0) { n = 0; } sPos_y(n); } else { n = 30; gravity(); } } /*重力効果*/ void Player::gravity() { if (gPos_y() < 200) { sPos_y(-6); } } /*座標の取得と設定*/ void Player::sPos_x(int xx)//加算 { pos.x += xx; } void Player::sPos_y(int yy)//加算 { pos.y += -yy; } int Player::gPos_x() { return pos.x; } int Player::gPos_y() { return pos.y; }
提示されたコードのどの部分が質問と対応するのか判断がつきません。関連付けを明記するか、もっとシンプルな例にするほうがいいと思います。
//////////を使い提示コードの該当部をわかりやすいように編集しました。
回答1件
あなたの回答
tips
プレビュー