2016-09-29 225 views
2

私はC++を初めて使用しており、私は小さなダンジョンのクローラゲームを作ろうとしています。現在、私はヘッダファイルに複数のベクトルを宣言していますが、複数のエラーが出るようです。私はこの問題をStackOverflowで検索しようとしましたが、答えは実際には動作していないようです。ここでエラーC2039: 'ベクトル': 'std'のメンバーではありません

は私のヘッダファイルのいずれかです。ここで(Hero.h)

#pragma once 

class Hero { 
public: 
    Hero(); 
    std::string name; 
    int experience; 
    int neededExperience; 
    int health; 
    int strength; 
    int level; 
    int speed; 
    std::vector<Item> items = std::vector<Item>(); 
    void levelUp(); 
private: 
}; 

は私の.cppファイルである:私は私がに新しいです言ったように(Hero.cpp)

#include "stdafx.h" 
#include <vector> 
#include "Hero.h" 
#include "Item.h" 

Hero::Hero() { 

} 
void Hero::levelUp() 
{ 

}; 

C++を使用しているので、私のコードよりもはるかに間違っているかもしれません。これは単なるテストです。

Error C2039 'vector': is not a member of 'std' CPPAssessment hero.h 13 
Error C2143 syntax error: missing ';' before '<' CPPAssessment hero.h 13 
Error C4430 missing type specifier - int assumed. Note: C++ does not support default-int CPPAssessment hero.h 13 
Error C2238 unexpected token(s) preceding ';' hero.h 13 

答えて

6

があなたのHero.hヘッダー内<vector>を含めると、あなたのHero.cppファイルからそれを削除することを検討:以下

は、Visual Studio 2015のエラー・リストに表示されるエラーです以下のコメントに記載されています。

+1

この回答にはあまり確信がありません。 cppファイルでは、vectorはhero.hの前にインクルードされているので、大丈夫です。あなたが提案するものは良いアドバイスですが、OPの情報に基づいてここでは問題はありません。このようなエラーはほとんどの場合ヘッダの欠落が原因であるため、OPの情報が間違っている可能性があります。 – paxdiablo

+0

@paxdiabloそうです。私はこの答えを削除するつもりです。 –

+1

@paxdiabloしかし私たちはそれを知らない。 stdafx.hにhero.hが含まれていて、それがベクトルの前に解析された場合、私には驚かないでしょう。 – hvd

3

std::vector<Item> items = std::vector<Item>();は、完全型と宣言しています。

そのため、コンパイラは、(とりわけ、コンパイル時評価可能な定数sizeof Heroを確立するために必要です)、その時点でstd::vector宣言を知っている必要があります。解決策は、hero.h#include <vector>に、のソースファイルです。

関連する問題