web-dev-qa-db-fra.com

ERREUR C2039: 'vecteur': n'est pas membre de 'std'

Je suis nouveau en C++ et j'essaye de faire un petit jeu de crawler de donjon. Actuellement, j'ai plusieurs vecteurs déclarés dans mes fichiers d'en-tête, mais ils semblent donner plusieurs erreurs. J'ai essayé de rechercher ce problème sur StackOverflow mais les réponses ne semblent pas vraiment fonctionner.

Voici l'un de mes fichiers d'en-tête: (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:
};

Voici mon fichier .cpp: (Hero.cpp)

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

Hero::Hero() {

}
void Hero::levelUp()
{

};

Comme je l'ai dit, je suis nouveau dans C++, donc il pourrait y avoir beaucoup plus de mal avec mon code que je ne le sais. C'est juste un test.

Voici les erreurs affichées dans la liste des erreurs de 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

Comprendre <vector> dans votre en-tête Hero.h et envisagez de le supprimer de votre fichier Hero.cpp comme indiqué dans les commentaires ci-dessous.

15
user1593881

std::vector<Item> items = std::vector<Item>(); déclare un type complet .

Par conséquent, le compilateur doit connaître la déclaration de std::vector à ce stade (entre autres, il est nécessaire d'établir la constante évaluable à la compilation sizeof Hero). La solution est de #include <vector> dans l'en-tête hero.h, pas le fichier source.

5
Bathsheba