VC++でBox2D.hの基本のクラスをゲームのクラス内で宣言したのですがうまくいきません
調べてもクラスの宣言の仕方ばかりしか出ないので質問させていただきました
以下のように書くと(b2World)に引数なしのコンストラクタが存在しないため、エラーがでます。
コンストラクタがないクラスを以下のように(またはメンバ変数のように)宣言する方法を教えてくださいm(__)m
C++
1//ヘッダー 2class GameScene : public AbstractScene 3{ 4 // 重力ベクトルの定義 5 b2Vec2 gravity; 6 7 // 「ワールド」を作成 8 b2World world; 9 10public: 11 GameScene(IOnSceneChangedListener *impl, const Parameter& parameter); 12 virtual ~GameScene() = default; 13 void update() override; 14 void draw() const override; 15} 16 17 18 19//メインファイル 20GameScene::GameScene(IOnSceneChangedListener* impl, const Parameter& parameter) : AbstractScene(impl, parameter) 21{ 22 // 重力ベクトルの定義 23 gravity.Set(0.0f, -10.0f); 24 25 // 「ワールド」を作成 26 world(gravity); 27}
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答2件
0
ベストアンサー
b2Vec2のコンストラクタおよびSet関数を見る限り
Setと引数付きコンストラクタは同じ動作になるので
c++
1GameScene::GameScene(IOnSceneChangedListener* impl, const Parameter& parameter) : 2 gravity(0.0f, -10.0f), world(gravity), AbstractScene(impl, parameter)
このとき、初期化の順番が宣言された順番に依存することには注意が必要です。
投稿2019/06/30 22:00
総合スコア15147
0
b2Worldそのものを知らないので、答えになっているか分からないのですが?
b2World world; → b2World *worldPtr; とかして
gravity.Set(0.0f, -10.0f); の後に worldPtr= new b2World(gravity);
とかダメなんですか?
参考(java):物理ワールドのセットアップ
投稿2019/06/30 21:28
総合スコア6851
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/06/30 22:32
2019/06/30 23:31
2019/07/01 10:40