Constructeur et liste d'initialisation

Résolu
dodo7263 Messages postés 616 Date d'inscription mercredi 10 septembre 2008 Statut Membre Dernière intervention 9 février 2017 - 30 sept. 2014 à 15:13
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 - 1 oct. 2014 à 10:43
Bonjour,

Je souhaiterai initialiser un <vector<pair<string,string> > avec des string vides dans la liste d'initialisation du constructeur de ma classe, comme je peux faire pour d'autres types genre int, double, float etc....

Ainsi dans mon fichier .h je déclare :

std::vector<std::pair<std::string, std::string> > m_pairValues;

et dans le constructeur (fichier .cpp) :

OutputDef::OutputDef() : m_pairValues(" ")

Sauf qu'il n'aime pas le ' (" ") '. J'ai également essayé d'utiliser :

std::make_pair(" ", " ") mais le compilateur m'engueule toujours.

En revanche si, dans ma liste d'initialisation de mon constructeur, je ne mets rien entre parenthèse m_pairValues() pour mon vecteur de pair, cela compile.

Est ce que je m'y prends mal ? Est-ce correct ce que je veux faire ?

Merci d'avance pour vos éventuelles réponses !

SD


3 réponses

cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
Modifié par cptpingu le 30/09/2014 à 17:33
Bonjour.

Il y a quelque chose de très suspicieux dans ce que tu me racontes (mais peut être ais-je simplement mal compris).

C'est ceci qui me fait "tilter":
[...] comme je peux faire pour d'autres types genre int, double, float etc....

Si tu dis qu'on peut initialiser un std::vector<int> _tab en faisant: _tab(34), alors c'est de là que vient ton souci. En faisant cela, oui, ça compile, mais ne fera pas ce que tu veux. _tab(34) veut dire que tu pré-alloues 34 cases. Si tu veux allouer une seule case valant 34, il faut faire _tab(1, 34).

De la même manière pour ton souci initial: _tab(1, std::make_pair("", ""))

__________________________________________________________________________________________________
Améliorez votre expérience CodeS-SourceS avec ce plugin:
http://codes-sources.commentcamarche.net/forum/affich-10000111-plugin-better-cs-2#cptpingu-signature
1
Rejoignez-nous