以下の提示コードですがインクルードしているのにも関わらず前方宣言をしないといけないのはなでしょうか?class Sprite 部です。
他のインクルードしてあるコードにはSprite クラスはインクルードしておりません。なぜなのでしょうか?
cpp
1#ifndef ___BLOCK_HPP_ 2#define ___BLOCK_HPP_ 3 4/*##################################################################### 5* テストクラス ブロック 6#####################################################################*/ 7 8#include "../../Actor_2D.hpp" 9#include "glm/glm.hpp" 10#include "../../../Header/Collision.hpp" 11#include "../../Sprite.hpp" 12 13 14#include <iostream> 15 16struct TextureData; 17class Sprite; 18 19class Block : public Actor_2D 20{ 21public: 22 23 Block(Game* g, std::shared_ptr<TextureData> sprite); //コンストラクタ 24 ~Block(); //デストラクタ 25 26 void Update() override; //計算 27 void Draw() override; //描画 28 29 Box_Collision_2D mCol; 30private: 31 32 std::unique_ptr<Sprite> mSprite; 33 34}; 35#endif 36
当該ヘッダーの内容を追記してください
前方宣言なくしたらエラーが出るんでしょうか?
前方宣言をなくすとエラーになります。
恐らく、宣言側に問題があると考えられます。
エラーになるものを宣言しているヘッダーを
追記していただけますか?
> 前方宣言をなくすとエラーになります。
エラーメッセージはどのようなものが出ますか?
重大度レベル コード 説明 プロジェクト ファイル 行 抑制状態
エラー C2065 'Sprite': 定義されていない識別子です。 OpenGL C:\Users\yw325\Desktop\OpenGL\OpenGL\Header\Game\Test\Block.hpp 35
既に解決済みのようですけども、関係しそうなソースファイルすべてを開示してくださいね。できればプロジェクト全体のソースも。
回答2件
あなたの回答
tips
プレビュー