2012-01-05 17 views
6

は方法メソッドの引数としてインラインdouble配列を渡す

functionA (double[] arg) 

私は

のように、

functionA({1.9,2.8}) 

ではなく最初の配列を作成し、それを渡すように、double配列をインラインで通過したい考えてみましょう

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

これはC++で可能ですか?シンプルに聞こえますが、とにかく私の疑問に疑問を抱かせるようなヒントが見つかりませんでした:)

+0

**メソッド**は、階層を介して存在する仮想メンバ関数です。 – DaddyM

答えて

8

あなたはコンパイルし、指定された-std=c++0xで++グラムの下で私の作品std::initializer_list<>

#include<vector> 

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

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

でこれを行うことができます。

5

はこれを使用すると、メモリリークが発生します

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

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

新しいによって割り当てられたメモリは、関数A()で削除されていることを確認する必要がありますが、C++ 0xの

、失敗で動作します!

3

std::initializer_listを使用してC++ 11で実行できます。

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

C++ 03では実行できません(または、実行可能でないほどの定型文が含まれます)。

関連する問題