考虑方法传递直列双数组作为方法参数
functionA (double[] arg)
我想通过一个双阵列内联,如
functionA({1.9,2.8})
,而不是先建立一个数组,然后通过它,像
double var[] = {1.0,2.0};
functionA(var);
这是可能的C++?听起来很简单,但我无法找到有关我的问题的提示,这让我很疑惑:)。
考虑方法传递直列双数组作为方法参数
functionA (double[] arg)
我想通过一个双阵列内联,如
functionA({1.9,2.8})
,而不是先建立一个数组,然后通过它,像
double var[] = {1.0,2.0};
functionA(var);
这是可能的C++?听起来很简单,但我无法找到有关我的问题的提示,这让我很疑惑:)。
您可以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
做到这一点。
这适用的C++ 0x
void functionA(double* arg){
//functionA
}
int main(){
functionA(new double[2]{1.0, 2.0});
//other code
return 0;
}
虽然你需要确保由新分配的内存中的泛函()被删除,否则你就会有内存泄漏!
你可以在C++ 11中使用std::initializer_list
来完成。
void fun(std::initializer_list<double>);
// ...
fun({ 1., 2. });
你不能在C++ 03中完成它(或者它会涉及到足够的样板,它将不可行)。
in C++ ** method **是通过层次结构存在的虚拟成员函数 – DaddyM 2012-01-05 08:34:08