Considérez la méthode
functionA (double[] arg)
Je veux passer un double tableau en ligne, comme
functionA({1.9,2.8})
et ne pas créer un tableau d’abord et ensuite le transmettre, comme
double var[] = {1.0,2.0}; functionA(var);
Est-ce possible avec C ++? Cela semble simple, mais je ne trouvais pas un indice de toute façon concernant ma question qui me rendait méfiant :).
Vous pouvez le faire avec std::initializer_list<>
#include void foo(const std::initializer_list& d) { } int main() { foo({1.0, 2.0}); return 0; }
Qui comstack et travaille pour moi sous g ++ avec -std=c++0x
spécifié.
Cela fonctionne avec c ++ 0x
void functionA(double* arg){ //functionA } int main(){ functionA(new double[2]{1.0, 2.0}); //other code return 0; }
Bien que vous deviez vous assurer que la mémoire allouée par new est supprimée dans la functionA (), à défaut de quoi il y aura une fuite de mémoire!
Vous pouvez le faire en C ++ 11 en utilisant std::initializer_list
.
void fun(std::initializer_list); // ... fun({ 1., 2. });
Vous ne pouvez pas le faire en C ++ 03 (ou cela impliquera assez de passe-partout, ce ne sera pas possible).