別ファイルに定義したField_Objectというクラス(ポインタ)の変数を宣言すると、エラーC4430(型指定子がありません)を吐きます。
vectorと配列で宣言しているのですが、using namespace std;を入れることによってvectorでの宣言ではエラーを吐きませんでした。
原因が分からずに困っております。
どうかご教授願います。
環境はVisual Studio Community2017を使用しており、最初フィルターでファイルを区別していたのですが、途中からフォルダで区別するように変えました。おそらくそこを境にこのようなエラーが吐き出されるようになりました。(インクルードディレクトリも確認しましたが、特に問題なさそうです)
追記:
いろいろ触って気づいたのですが、「このエラーを吐きだしているファイル(Battle_State.h)を他のどのファイルも参照しない」場合、エラーが消えます。ただ、原因が分からない上、他のファイルでBattle_State.hを参照することはどうしても必要になります。こうなる原因、解決法のご教授お願い致します。
以下コードです。
Battle_State.h ---------------------------------------------------- #pragma once #include "DXLib_Orig.h" //Field_Objectを定義 #include "Shape.h" using namespace std; using namespace DX_Lib; //DXLib_Origの名前空間 (#define width 3 //別のファイルで宣言しています) (#define length 3 //別のファイルで宣言しています) #define SIZE 2.f #define Player_Location 1.f #define Side_Location 1.f #define Enemy_Location Player_Location+(3.f*SIZE) class Game_State { public: virtual Game_State* Update() { return NULL; } virtual void Draw() {}; }; class Battle_State :public Game_State { public: vector<Field_Object*> objects;//using namespace std;を入れるとなぜか通る vector<Field_Object*> secure_objects;//上に同じ Field_Object* Panel_ALL[6][6];//C4300 Field_Object* Player_Panel[width][length];//C4300 Field_Object* Enemy_Panel[width][length];//C4300 public: Battle_State(); ~Battle_State(); void Draw() override Game_State* Update() override; };
class Field_Object DirectXを使用 ---------------------------------------------------- class Field_Object { public: Field_Object() {}; Field_Object(float x, float y, float depth); ~Field_Object() {}; public: virtual void Update() {}; virtual void Draw() {}; void Move(float x, float y, float z); void Move(float x, float y); D3DXVECTOR3* Get_Location(); protected: D3DXVECTOR3 pos; D3DXMATRIX loc; private: D3DXVECTOR3 move_vector; };
回答1件
あなたの回答
tips
プレビュー