2012-01-05 78 views
6

考慮方法傳遞直列雙數組作爲方法參數

functionA (double[] arg) 

我想通過一個雙陣列內聯,如

functionA({1.9,2.8}) 

,而不是先建立一個數組,然後通過它,像

double var[] = {1.0,2.0}; 
functionA(var); 

這是可能的C++?聽起來很簡單,但我無法找到有關我的問題的提示,這讓我很疑惑:)。

+0

in C++ ** method **是通過層次結構存在的虛擬成員函數 – DaddyM 2012-01-05 08:34:08

回答

8

您可以std::initializer_list<>

#include<vector> 

void foo(const std::initializer_list<double>& d) 
{ } 

int main() 
{ 
    foo({1.0, 2.0}); 
    return 0; 
} 

來編譯和下摹作品對我來說++與指定-std=c++0x做到這一點。

5

這適用的C++ 0x

void functionA(double* arg){ 
    //functionA 
} 

int main(){ 
    functionA(new double[2]{1.0, 2.0}); 
    //other code 
    return 0; 
} 

雖然你需要確保由新分配的內存中的泛函()被刪除,否則你就會有內存泄漏!

3

你可以在C++ 11中使用std::initializer_list來完成。

void fun(std::initializer_list<double>); 
// ... 
fun({ 1., 2. }); 

你不能在C++ 03中完成它(或者它會涉及到足夠的樣板,它將不可行)。