[解決済み] include を使用しているにもかかわらず、未定義のクラスを使用している
2022-02-08 17:27:02
質問
ゲーム・クラスのインスタンスを別のクラスで作成したいのですが、次のようなエラーが発生します。
uses undefined class
を含むにもかかわらず、エラーが発生します。
game.h
.
ゲーム.h
#ifndef GAME_H
#define GAME_H
#include "Move.h"
class Game
{
private:
//--------------------------------------------------------------------------
// Private copy constructor
//
Game(const Game& original);
public:
//--------------------------------------------------------------------------
// Public assignment operator
//
Game& operator=(const Game& original);
//Constructors
Game ();
//Destructor
~Game ();
};
#endif // _GAME_H
Game Objectを作成するHeader。
移動.h
#ifndef MOVE_H
#define MOVE_H
#include "Game.h"
class Move : public Command
{
private:
Move (const Move& original);
Move& operator=(const Move& original);
Game m_game_; //Error
};
#endif // _MOVE_H
ビジュアルスタジオが投げています。
move.h(40): error C2079: 'Move::m_game_' uses undefined class 'Game'
を使用すると動作します。
Game* game;
しかし、それは私が必要とする/望んでいるものではありません。
なぜコンパイラは未定義のクラスというエラーを出すのですか?
よろしくお願いします。
解決方法は?
Game.hはMove.hを使用していないのでインクルードする必要はありません。コメントにあるように、もしcppで使用されているならば、そこにインクルードすべきです。
問題はおそらく、他の場所、例えばmainからのincludeヘッダーファイルの順序に関係します。この構造を考えてみましょう。
(見やすくするために一部を削除しました)
main.cppファイル
#include "Game.h"
#include "Move.h"
Game.hファイル
#ifndef GAME_H
#define GAME_H
#include "Move.h"
class Game
{
public:
Game() {}
private:
};
#endif // _GAME_H
さて、Move.h を Game.h に追加した後、どのように見えるか見てみましょう。
#ifndef GAME_H
#define GAME_H
//added
#ifndef MOVE_H
#define MOVE_H
#include "Game.h"
class Move
{
public:
Move() {}
private:
Game m_game_;
};
#endif // _MOVE_H
//to here
class Game
{
public:
Game() {}
private:
};
#endif // _GAME_H
見ての通り、最終的に Game m_game_; を宣言するところでは、まだ実際にクラスを宣言していません。インクルードする順番を変えるか、Game.hから#include "Move.h"を削除して、そこで使用されていないことを確認してください。
関連
-
[解決済み】fpermissiveフラグは何をするのですか?
-
[解決済み】Visual Studio 2013および2015でC++コンパイラーエラーC2280「削除された関数を参照しようとした」が発生する
-
[解決済み] using namespace std;」はなぜバッドプラクティスだと言われるのですか?
-
[解決済み] JavaScriptでNULL、未定義、空白の変数をチェックする標準的な関数はありますか?
-
[解決済み] 変数が「未定義」または「NULL」であるかどうかを判断するにはどうすればよいですか?
-
[解決済み] Pythonで静的なクラス変数は可能ですか?
-
[解決済み] Could not find or load main class "とはどういう意味ですか?
-
[解決済み] JavaScriptのnullとundefinedの違いは何ですか?
-
[解決済み] C++でクラスと構造体はいつ使い分けるべきか?
-
[解決済み】未定義のオブジェクトプロパティを検出する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Visual Studio 2015で「非標準の構文。'&'を使用してメンバーへのポインターを作成します」エラー
-
[解決済み】クラステンプレートの引数リストがない
-
[解決済み] 既に.objで定義されている-二重包含はない
-
[解決済み] [Solved] インクルードファイルが開けません。'stdio.h' - Visual Studio Community 2017 - C++ Error
-
[解決済み] gdbを使用してもデバッグシンボルが見つからない
-
[解決済み】VC++の致命的なエラーLNK1168:書き込みのためにfilename.exeを開くことができません。
-
[解決済み】警告 - 符号付き整数式と符号なし整数式の比較
-
[解決済み] 警告:暗黙の定数変換でのオーバーフロー
-
[解決済み] 変数サイズのオブジェクトが初期化されないことがある c++
-
[解決済み】c++で.txtファイルから2次元の配列に読み込む