2012-01-05 76 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中完成它(或者它会涉及到足够的样板,它将不可行)。