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
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.
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.