質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Visual C++

Microsoft Visual C++はWindowsのCとC++の統合開発環境(IDE)であり、コンパイラやデバッガを含んでいます。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

2回答

839閲覧

C++クラスのメンバでコンストラクタの引数がないクラスを宣言したい

nicoyou

総合スコア129

Visual C++

Microsoft Visual C++はWindowsのCとC++の統合開発環境(IDE)であり、コンパイラやデバッガを含んでいます。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2019/06/30 17:56

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ページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答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

asm

総合スコア15147

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nicoyou

2019/06/30 22:32

これを書いて実行してみたのですが、cateyeさんに返信したのと同じエラーが発生しました b2Worldの宣言をコメントアウトした場合は発生しないため原因が分かりませんm(__)m
asm

2019/06/30 23:31

リンカのエラーであり、C++のレベルではなくなっているような気がしますが ライブラリの導入に失敗しているようです。 Box2Dはヘッダのみではないので、適切にライブラリを(必要ならばビルドし)リンクする必要があります。
nicoyou

2019/07/01 10:40

ライブラリの導入に失敗していたんですか.... libファイルのビルドと設定等は行ってはいます とりあえず解決とさせていただきます ありがとうございました
guest

0

b2Worldそのものを知らないので、答えになっているか分からないのですが?
b2World world; → b2World *worldPtr; とかして
gravity.Set(0.0f, -10.0f); の後に worldPtr= new b2World(gravity);
とかダメなんですか?

参考(java):物理ワールドのセットアップ

投稿2019/06/30 21:28

cateye

総合スコア6851

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nicoyou

2019/06/30 21:44

重大度レベル コード 説明 プロジェクト ファイル 行 抑制状態 エラー LNK2019 未解決の外部シンボル "public: __thiscall b2World::b2World(struct b2Vec2 const &)" (??0b2World@@QAE@ABUb2Vec2@@@Z) が関数 "public: __thiscall GameScene::GameScene(class IOnSceneChangedListener *,class Parameter const &)" (??0GameScene@@QAE@PAVIOnSceneChangedListener@@ABVParameter@@@Z) で参照されました。 physics_engine_box2d C:\Users\nicoyou\Documents\Visual Studio 2017\Projects\physics_engine_box2d\physics_engine_box2d\GameScene.obj 1 警告 C4244 '初期化中': 'int' から 'float' への変換です。データが失われる可能性があります。 physics_engine_box2d c:\users\nicoyou\documents\visual studio 2017\projects\physics_engine_box2d\physics_engine_box2d\logoscene.cpp 8 エラー LNK2001 外部シンボル ""public: virtual class b2Shape * __thiscall b2PolygonShape::Clone(class b2BlockAllocator *)const " (?Clone@b2PolygonShape@@UBEPAVb2Shape@@PAVb2BlockAllocator@@@Z)" は未解決です。 physics_engine_box2d C:\Users\nicoyou\Documents\Visual Studio 2017\Projects\physics_engine_box2d\physics_engine_box2d\GameScene.obj 1 エラー LNK2001 外部シンボル ""public: virtual int __thiscall b2PolygonShape::GetChildCount(void)const " (?GetChildCount@b2PolygonShape@@UBEHXZ)" は未解決です。 physics_engine_box2d C:\Users\nicoyou\Documents\Visual Studio 2017\Projects\physics_engine_box2d\physics_engine_box2d\GameScene.obj 1 エラー LNK2019 未解決の外部シンボル "public: void __thiscall b2PolygonShape::SetAsBox(float,float)" (?SetAsBox@b2PolygonShape@@QAEXMM@Z) が関数 "public: __thiscall GameScene::GameScene(class IOnSceneChangedListener *,class Parameter const &)" (??0GameScene@@QAE@PAVIOnSceneChangedListener@@ABVParameter@@@Z) で参照されました。 physics_engine_box2d C:\Users\nicoyou\Documents\Visual Studio 2017\Projects\physics_engine_box2d\physics_engine_box2d\GameScene.obj 1 エラー LNK2001 外部シンボル ""public: virtual bool __thiscall b2PolygonShape::TestPoint(struct b2Transform const &,struct b2Vec2 const &)const " (?TestPoint@b2PolygonShape@@UBE_NABUb2Transform@@ABUb2Vec2@@@Z)" は未解決です。 physics_engine_box2d C:\Users\nicoyou\Documents\Visual Studio 2017\Projects\physics_engine_box2d\physics_engine_box2d\GameScene.obj 1 エラー LNK2001 外部シンボル ""public: virtual bool __thiscall b2PolygonShape::RayCast(struct b2RayCastOutput *,struct b2RayCastInput const &,struct b2Transform const &,int)const " (?RayCast@b2PolygonShape@@UBE_NPAUb2RayCastOutput@@ABUb2RayCastInput@@ABUb2Transform@@H@Z)" は未解決です。 physics_engine_box2d C:\Users\nicoyou\Documents\Visual Studio 2017\Projects\physics_engine_box2d\physics_engine_box2d\GameScene.obj 1 エラー LNK2001 外部シンボル ""public: virtual void __thiscall b2PolygonShape::ComputeAABB(struct b2AABB *,struct b2Transform const &,int)const " (?ComputeAABB@b2PolygonShape@@UBEXPAUb2AABB@@ABUb2Transform@@H@Z)" は未解決です。 physics_engine_box2d C:\Users\nicoyou\Documents\Visual Studio 2017\Projects\physics_engine_box2d\physics_engine_box2d\GameScene.obj 1 エラー LNK2001 外部シンボル ""public: virtual void __thiscall b2PolygonShape::ComputeMass(struct b2MassData *,float)const " (?ComputeMass@b2PolygonShape@@UBEXPAUb2MassData@@M@Z)" は未解決です。 physics_engine_box2d C:\Users\nicoyou\Documents\Visual Studio 2017\Projects\physics_engine_box2d\physics_engine_box2d\GameScene.obj 1 エラー LNK2019 未解決の外部シンボル "public: class b2Fixture * __thiscall b2Body::CreateFixture(struct b2FixtureDef const *)" (?CreateFixture@b2Body@@QAEPAVb2Fixture@@PBUb2FixtureDef@@@Z) が関数 "public: __thiscall GameScene::GameScene(class IOnSceneChangedListener *,class Parameter const &)" (??0GameScene@@QAE@PAVIOnSceneChangedListener@@ABVParameter@@@Z) で参照されました。 physics_engine_box2d C:\Users\nicoyou\Documents\Visual Studio 2017\Projects\physics_engine_box2d\physics_engine_box2d\GameScene.obj 1 エラー LNK2019 未解決の外部シンボル "public: class b2Fixture * __thiscall b2Body::CreateFixture(class b2Shape const *,float)" (?CreateFixture@b2Body@@QAEPAVb2Fixture@@PBVb2Shape@@M@Z) が関数 "public: __thiscall GameScene::GameScene(class IOnSceneChangedListener *,class Parameter const &)" (??0GameScene@@QAE@PAVIOnSceneChangedListener@@ABVParameter@@@Z) で参照されました。 physics_engine_box2d C:\Users\nicoyou\Documents\Visual Studio 2017\Projects\physics_engine_box2d\physics_engine_box2d\GameScene.obj 1 エラー LNK2019 未解決の外部シンボル "public: class b2Body * __thiscall b2World::CreateBody(struct b2BodyDef const *)" (?CreateBody@b2World@@QAEPAVb2Body@@PBUb2BodyDef@@@Z) が関数 "public: __thiscall GameScene::GameScene(class IOnSceneChangedListener *,class Parameter const &)" (??0GameScene@@QAE@PAVIOnSceneChangedListener@@ABVParameter@@@Z) で参照されました。 physics_engine_box2d C:\Users\nicoyou\Documents\Visual Studio 2017\Projects\physics_engine_box2d\physics_engine_box2d\GameScene.obj 1 エラー LNK2019 未解決の外部シンボル "public: void __thiscall b2World::Step(float,int,int)" (?Step@b2World@@QAEXMHH@Z) が関数 "public: virtual void __thiscall GameScene::update(void)" (?update@GameScene@@UAEXXZ) で参照されました。 physics_engine_box2d C:\Users\nicoyou\Documents\Visual Studio 2017\Projects\physics_engine_box2d\physics_engine_box2d\GameScene.obj 1 エラー LNK2019 未解決の外部シンボル "public: void __thiscall b2World::ClearForces(void)" (?ClearForces@b2World@@QAEXXZ) が関数 "public: virtual void __thiscall GameScene::update(void)" (?update@GameScene@@UAEXXZ) で参照されました。 physics_engine_box2d C:\Users\nicoyou\Documents\Visual Studio 2017\Projects\physics_engine_box2d\physics_engine_box2d\GameScene.obj 1 エラー LNK1120 13 件の未解決の外部参照 physics_engine_box2d C:\Users\nicoyou\Documents\Visual Studio 2017\Projects\physics_engine_box2d\Debug\physics_engine_box2d.exe 1 書いていただいた通りのやり方でやった場合このようなエラーが出るのですが、原因と対処方法が分からないので書き方が悪いのだと思っていました どのようなことを確認すればいいでしょうか? (libファイルの関連付けやインクルードディレクトリの設定は確認しました)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問