std::vector<char> p = {"abc", "def"};
"abc"
et "def"
ne sont pas char
, pourquoi le compilateur ne me donne-t-il pas une erreur concernant cette incompatibilité de type?
std::vector<char> p = {"abc", "def"};
"abc"
et "def"
ne sont pas char
, pourquoi le compilateur ne me donne-t-il pas une erreur concernant cette incompatibilité de type?
Vous n'êtes pas à l'appelant vector
s'constructeur qui prend un initializer_list<char>
. Que le constructeur n'est pas viable parce que, comme vous l'avez dit, vous n'êtes pas en passant une liste d' char
s.
Mais vector
a aussi un constructeur qui prend des itérateurs à une série d'éléments.
template< class InputIt >
vector( InputIt first, InputIt last,
const Allocator& alloc = Allocator() );
Malheureusement, ce constructeur matchs, car les deux arguments de chaque implicitement convertir char const *
. Mais votre code a un comportement indéfini, parce que le début et la fin des itérateurs d'être passé au constructeur ne sont pas une plage valide.
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.