3 votes

Comment accéder aux éléments d'une classe à partir d'un vecteur statique ?

J'ai un vecteur statique de class Town dans la même classe, et j'essaie d'accéder à ses éléments.

Code :

// town.h
class Town
{
    public:
        static int nrOfTowns;
        static std::vector<Town> *towns;
        std::string name;
};

int Town::nrOfTowns = 0;
std::vector<Town> *Town::towns = NULL;

// main.cpp
/* code */
Town::towns = new std::vector<Town> (Town::nrOfTowns); // initializing vector
Town::towns[0].name; // gives me an error

Je reçois une erreur : class std::vector<Town> n'a pas de membre nommé name .

4voto

Thomas Sablik Points 1854

Dans votre code towns est un pointeur sur un vecteur, mais il devrait probablement s'agir d'un vecteur :

// town.h
class Town
{
    public:
        static int nrOfTowns;
        static std::vector<Town> towns;
        std::string name;
};

int Town::nrOfTowns = 0;
std::vector<Town> Town::towns;

// main.cpp
/* code */
Town::towns.resize(Town::nrOfTowns);
Town::towns[0].name;

Si vous voulez vraiment qu'il s'agisse d'un pointeur, vous devez déréférencer le pointeur

// town.h
class Town
{
    public:
        static int nrOfTowns;
        static std::vector<Town> *towns;
        std::string name;
};

int Town::nrOfTowns = 0;
std::vector<Town> *Town::towns = nullptr;

// main.cpp
/* code */
Town::towns = new std::vector<Town> (Town::nrOfTowns); // initializing vector
(*Town::towns)[0].name; // gives me an error
delete Town::towns;

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X