web-dev-qa-db-ja.com

エラーC2039: 'vector': 'std'のメンバーではありません

私はC++の初心者であり、小さなダンジョンクローラーゲームを作成しようとしています。現在、ヘッダーファイルで複数のベクターが宣言されていますが、複数のエラーが発生しているようです。 StackOverflowでこの問題を検索しようとしましたが、答えは実際には機能していないようです。

これが私のヘッダーファイルの1つです:(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++が初めてなので、私のコードには、私が知っているよりもはるかに多くの間違いがあるかもしれません。これは単なるテストです。

Visual Studio 2015のエラーリストに表示されるエラーは次のとおりです。

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  
9
Jelmer

含む<vector>Hero.hヘッダーに追加し、以下のコメントに記載されているようにHero.cppファイルから削除することを検討してください。

15
user1593881

std::vector<Item> items = std::vector<Item>();は、完全な型を宣言します

したがって、コンパイラは、その時点でのstd::vectordeclarationを知る必要があります(特に、コンパイル時の評価可能な定数を確立する必要があります) sizeof Hero)。解決策は、ヘッダーの#include <vector>hero.hnotソースファイルです。

5
Bathsheba