提示コードですが。Entry.hでgmae,gameOver,titleの三つをインクルードしてそれをgame,gameOver ,title .hppファイルで使っているため認識できない型 コンパイルエラーが発生してしまうものと思われるのですがこの場合どうやって修正,回避するのでしょうか?
エラー原文 [ 重大度レベル コード 説明 プロジェクト ファイル 行 抑制状態
エラー C2027 認識できない型 'Entry' が使われています。 Project1 C:\Users\User\Desktop\Project1\Project1\Game.hpp 26
]
cpp
1#ifndef ENTRY_HPP_ 2#define ENTRY_HPP_ 3 4#include "Game.hpp" 5#include "GameOver.hpp" 6#include "Title.hpp" 7 8 9enum class Scene; 10class Entry 11{ 12public: 13 Entry() 14 { 15 changeScene = Scene::Title; 16 title = new Title(); //タイトル 17 game = nullptr; //ゲーム 18 gameOver = nullptr; //ゲームオーバー 19 } 20 21 void Update() 22 { 23 24 if (title != nullptr) 25 { 26 title->Update(this); 27 } 28 else if (game != nullptr) 29 { 30 game->Update(this); 31 } 32 else if (gameOver != nullptr) 33 { 34 gameOver->Update(this); 35 } 36 37 38 39 //シーン推移 40 switch (changeScene) 41 { 42 case Scene::Title: 43 { 44 if (gameOver != nullptr) 45 { 46 delete gameOver; 47 48 } 49 50 if (game != nullptr) 51 { 52 delete game; 53 54 } 55 56 if (title == nullptr) 57 { 58 title = new Title(); 59 } 60 }; 61 break; 62 63 64 case Scene::Game: 65 { 66 if (gameOver != nullptr) 67 { 68 delete gameOver; 69 70 } 71 72 if (game == nullptr) 73 { 74 game = new Game(); 75 76 } 77 78 if (title != nullptr) 79 { 80 delete title; 81 } 82 }; 83 break; 84 85 86 87 88 89 90 case Scene::GameOver: 91 { 92 if (gameOver == nullptr) 93 { 94 gameOver = new GameOver(); 95 96 } 97 98 if (game != nullptr) 99 { 100 delete game; 101 102 } 103 104 if (title != nullptr) 105 { 106 delete title; 107 } 108 }; 109 break; 110 } 111 } 112 113 114 //識別 115 enum class Scene { 116 Title, 117 Game, 118 GameOver 119 }; 120 121 //シーン切り替え 122 void MoveTo(Scene e) 123 { 124 changeScene = e; 125 } 126 127 128 129 130 Scene changeScene; 131 132 private: 133 134 Title* title; 135 Game* game; 136 GameOver* gameOver; 137}; 138 139 140 141 142#endif 143
cpp
1#ifndef GAME_HPP_ 2#define GAME_HPP_ 3 4#include <iostream> 5#include "Entry.hpp" 6class Entry; 7 8//ゲームクラス 9class Game 10{ 11public: 12 Game() 13 { 14 std::cout << "game" << std::endl; 15 } 16 17 void Update(Entry* e) 18 { 19 std::cout<< "game Update()" << std::endl; 20 std::cout<<"scene to: "; 21 int a = 0; 22 std::cin >> a; 23 //getchar(); 24 25 26 e->MoveTo((Entry::Scene)a); 27 } 28 29 void Draw() 30 { 31 std::cout << "gaem Draw()" << std::endl; 32 33 } 34 35}; 36 37#endif;
cpp
1#ifndef GAMEOVER_HPP_ 2#define GAMEOVER_HPP_ 3 4 5 6#include <iostream> 7#include "Entry.hpp" 8 9//gameOverクラス 10class GameOver 11{ 12public: 13 GameOver() 14 { 15 std::cout << "game over" << std::endl; 16 } 17 18 void Update(Entry* e) 19 { 20 std::cout << "game over Update()" << std::endl; 21 std::cout << "move to: "; 22 int a = 0; 23 std::cin >> a; 24 25 26 27 } 28 29 void Draw() 30 { 31 std::cout << "game over Draw()" << std::endl; 32 33 } 34 35}; 36 37#endif
cpp
1#ifndef TITLE_HPP_ 2#define TITLE_HPP_ 3 4 5#include <iostream> 6#include "Entry.hpp" 7 8//タイトルクラス 9class Title 10{ 11public: 12 Title() 13 { 14 std::cout << "title" << std::endl; 15 } 16 17 void Update(Entry* e) 18 { 19 std::cout << "title Update()" << std::endl; 20 getchar(); 21 } 22 23 void Draw() 24 { 25 std::cout << "title Draw()" << std::endl; 26 } 27 28}; 29#endif 30
回答4件
あなたの回答
tips
プレビュー