Passer un double tableau en ligne comme argument de méthode

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).