Comment initialiser un membre const vecteur d'une classe C++
J'ai un const vecteur en tant que membre d'une classe. Comment puis-je initialiser?
Je sais que pour la constante de membres de la seule façon que nous pouvons initialiser est par la liste d'initialisation à la fonction constructeur de la classe. Mais exactement comment le faire avec un vecteur, je ne sais pas.
Par exemple,
class ClassA
{
const std::vector<int> m_Vec;
};
Grâce
Vous devez vous connecter pour publier un commentaire.
Vous pouvez initialiser le vecteur dans la déclaration de classe
Ou dans le constructeur à l'aide de l'initialisation de membre
Tout d'abord, je voudrais dire en général que vous voulez éviter cela empêche l'utilisation de la classe de façon correcte (voir exemple ci-dessous). Aussi, si le membre de données est complètement encapsulé dans la classe il n'y a aucune raison qu'il ne peut pas être un non-const membre de données tout en utilisant les classes de l'interface afin de garantir le droit à un const façon (c'est à dire, les instanciations de la classe n'ont aucun moyen de modifier le membre de données).
Mauvais Exemple
Autres réponses fournir quelques moyens pour initialiser la const de données des membres, mais voici celle que j'ai n'ai pas vu dans les autres réponses: utiliser une fonction. Je pense que l'avantage de l'utilisation d'une fonction pourrait être si l'initialisation est complexe et probablement dépendante de l'exécution d'entrée (par exemple, vous pourriez mettre à jour le
init
fonction de prendre extérieure de l'état à modifier la façon dont lestd::vector
est initialisée).Gratuit Exemple De La Fonction
Membre de l'exemple de la fonction
const std::vector
à l'égard d'unconst std::array
.En c++03 vous initialiser le vecteur par son constructeur, ce qui est assez délicat, puisque vous devrez le copier frome ailleurs. Par exemple:
En C++11, cela va tout de suite. Dans le constructeur:
En place:
Comme ceci:
Ou ceci: