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

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

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

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

解決済

エラー「C2504 'Scene_base': 定義されていない基底クラスが宣言されています。」の解決法がわからない

削除済ユーザー
削除済ユーザー

総合スコア0

C++

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

1回答

0評価

0クリップ

6閲覧

投稿2021/02/16 05:54

class Game_Scene : public Scene_base

で以下のエラーが発生するのですがなぜこのようなエラーが発生するのでしょうか?全てオーバーライドしていますが原因がわかりません。
void Update() void Draw();関数はオーバーライド定義済です。

「 重大度レベル コード 説明 プロジェクト ファイル 行 抑制状態
エラー C2504 'Scene_base': 定義されていない基底クラスが宣言されています。 Hack_and_Slash C:\Users\yw325\Desktop\Hack_and_Slash\Hack_and_Slash\Game_Scene.hpp 18

hpp

#ifndef ___SCENE_BASE_ #define ___SCENE_BASE_ #include "Entry.hpp" #include <iostream> /*#################################################### * シーンの基底クラス * * 説明 * 全てのシーンクラスはこのクラスを継承する。 ######################################################*/ enum class Scene_Type; class Scene_base { public: Scene_base(Scene_Type t); //コンストラクタ ~Scene_base(); //デストラクタ virtual void Update() = 0; //更新 virtual void Draw() = 0; //描画 Scene_Type getSceneType(); //シーンタイプを取得 protected: Scene_Type Type; //シーンタイプ }; #endif

cpp

#include "Scene_Base.hpp" //コンストラクタ Scene_base::Scene_base(Scene_Type t) { Type = t; //シーンにタイプを設定 } //シーンタイプを取得 Scene_Type Scene_base::getSceneType() { return Type; } //デストラクタ Scene_base::~Scene_base() { }

hpp

#ifndef ___GAME_SCENE_HPP_ #define ___GAME_SCENE_HPP_ #include "Entry.hpp" #include "Scene_base.hpp" #include <iostream> /*#################################################### * メインゲーム シーン * * 説明 * メインのゲーム画面 ######################################################*/ class Scene_base; enum class Scene_Type; class Game_Scene : public Scene_base { public: Game_Scene(Scene_Type t); //コンストラクタ ~Game_Scene(); //デストラクタ void Update(); //更新 void Draw(); //描画 private: }; #endif

cpp

#include "Game_Scene.hpp" //コンストラクタ Game_Scene::Game_Scene(Scene_Type t) : Scene_base(t) { } //更新 void Game_Scene::Update() { printf("ああ"); } //描画 void Game_Scene::Draw() { printf("ああ"); } //デストラクタ Game_Scene::~Game_Scene() { }

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

int32_t
int32_t

2021/02/16 09:20 編集

Scene_Base\.hpp と Game_Scene\.hpp から不要な #include "Entry\.hpp" を消すと直りますか\? もしそうなら、原因と対策を説明できると思います。 あと、複数のファイルを貼り付けるときはファイル名も書いてください。

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

C++

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