Comment puis-je déclarer la taille d'un tableau de chaînes si elle est une fonction membre

StackOverflow https://stackoverflow.com/questions/2294003

  •  21-09-2019
  •  | 
  •  

Question

J'ai un problème avec le réglage de la taille de mon tableau. Dans mon code, j'ai:

class Test {
    public:
       ....//Functions
    private:
      string name[];
};

Test() {
   //heres where i want to declare the size of the array
}

Est-ce possible?

Était-ce utile?

La solution

Non. Mais vous pouvez utiliser un vecteur de chaînes à la place:

private:
  std::vector<std::string> name;

Ensuite, dans votre constructeur:

Test()
    : name(sizeOfTheArray)
{
}

Le vecteur sera de taille pour le nombre de chaînes que vous spécifiez. Cela signifie toute la mémoire pour les chaînes seront alloués à la fois. Vous pouvez modifier la taille du tableau que vous le souhaitez, mais il n'y a rien de dire que vous devez. Ainsi, vous obtenez tous les avantages de l'utilisation d'un tableau alloué dynamiquement, et puis certains, sans les inconvénients.

Autres conseils

Vous devrez allouer dynamiquement la mémoire pour le tableau en utilisant new.

Déclarer la variable comme ceci:

private:
    string* name;

Et dans votre constructeur faire ceci:

int size = ...
name = new string[size];

Et libérer la mémoire dans le destructor comme ceci:

delete [] name;
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top