#やりたいこと
あるシーンが持っているオブジェクト同士でアクセスしたい。
例えば、ゲームシーンクラスのメンバ変数にプレイヤーと敵がいた時、
プレイヤーから敵にアクセスしたい。
#問題
プレイヤーや敵などのオブジェクトを初期化するときに、
ゲームシーンへのポインタをオブジェクトに持たせることでシーンへアクセスしようとしたら、
「ゲームシーン」と「プレイヤー」で相互参照が発生しコンパイルが通らない。
#試したこと
前方宣言をしてみましたが、エラーが出てしまいます。
scene_test.h(12): error C2079:
'TestScene::player' が 未定義の class 'Player' で使用しています。
#質問
0. この問題を解決する方法を教えてください。
0. 「やりたいこと」を達成する上でこれよりもいい方法がありましたら教えてください。
※1つだけでも構いません。答えられることがありましたらどんどん教えてください。
#ヘッダー
C++
1//Scene_Test.h 2#pragma once 3 4#include "BaseScene.h" 5#include "Player.h" 6#include "Grid.h" 7#include "Wall.h" 8class Player; //前方宣言 9 10class TestScene : public IScene 11{ 12private: 13 Player player; 14 Wall wall; 15 16public: 17 void Init()override; 18 void Uninit()override; 19 void Update()override; 20 void Draw()override; 21 22 Wall GetWall(); 23}; 24 25
C++
1//Player.h 2#pragma once 3 4#include "object.h" 5#include "Vector2.h" 6#include "collision2d.h" 7#include "Scene_Test.h" 8class TestScene; //前方宣言 9 10class Player :public GameObject 11{ 12private: 13 TestScene *m_scene; 14 float m_jumpHight; 15 float m_walkSpeed; 16 float m_gravity; 17 Vector2 m_velocity; 18 Collision2D m_collision; 19 20public: 21 void Init(TestScene *ownerScene); 22 void Draw()override; 23 void Update(); 24};
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/08/14 21:27
2021/08/14 23:37
2021/08/14 23:58 編集
2021/08/15 09:44
2021/08/15 16:26