déclaration d'un vecteur en tant que membre de la classe
J'ai simple de la classe dans un fichier d'en-tête: un.hh
#ifndef a_hh
#define a_hh
class a
{
public:
int i;
a()
{
i = 0;
}
};
#endif
Puis j'ai un fichier:b.cc
#include <iostream>
#include "a.hh"
using namespace std;
int main(int argc, char** argv)
{
a obj;
obj.i = 10;
cout << obj.i << endl;
return 0;
}
>
Jusqu'à ce point, tout va bien.
Je compile le code et il compile bien.
Mais dès que j'ajoute un vecteur dans la classe:
#ifndef a_hh
#define a_hh
class a
{
public:
int i;
vector < int > x;
a()
{
i = 0;
}
};
#endif
J'obtiens une erreur de compilation comme ci-dessous:
> CC b.cc
"a.hh", line 7: Error: A class template name was expected instead of vector.
1 Error(s) detected.
Quel est le problème de déclaration d'un vecteur ici en tant que membre?
- Avez-vous
#include <vector>
? - Il semble que le compilateur ne reconnait pas le vecteur. Avez-vous ajouté le comprennent ? Et ajouter le std:: espace de noms de vecteur
- .. et après, y compris, vous devez utiliser std::vector
- Oui..même après que je reçois le même message d'erreur.
- Qu'est-ce que
a::a()
en train de faire là? C'est inutile de qualification. Supprimer laa::
. - Vous devriez en apprendre davantage sur et commencer à utiliser le constructeur de l'initialiseur de listes.
Vous devez vous connecter pour publier un commentaire.
Vous devez
#include <vector>
et d'utiliser le nom completstd::vector<int> x;
:Autres points:
a::
sur le constructeuri
au lieu de le retard de la cession./Za
) n'est vraiment désactiver tout. Je compile avec elle si possible.déclaration d'un vecteur en tant que membre de la classe:
1.Vous devez
#include <vector>
etusing namespace std
, puis un.hh comme ci-dessous:2. Si vous ne voulez pas pour utiliser uniquement l'espace de noms std dans tout votre code, vous pouvez spécifié l'espace de noms avant type, tout comme
std::vector<int> x;
using namespace std
.std
dans l'espace de noms global). Nawaz vous a donné un -1 en effet de supposer que votre tête va être utilisé que sous la condition que tout le monde utilise toujoursnamespace std
.