2012-03-18 9 views
0

refで配列を渡したいのですが?配列は最初の要素へのポインタで、refで '全体配列'を渡したいと思います。私はC++ - refで配列を渡す

void someFunction(double& adouble){...} 

を定義する場合、adoubleダブルス二重ではなく、配列への参照です。

私は

void anotherFunction(double* adouble){...} 

を定義するならば、私の議論は、右、ダブルまたは配列へのポインタであるが、それは参照によって渡されていませんか?

おかげで、特定のサイズについて

+3

アレイは、その最初の要素へのポインタではありません。配列は配列です。ポインタはポインタです。配列を渡したい場合は、ほとんどの場合、代わりに 'std :: vector'を使用することがほとんどです。 – jalf

+4

コメントが1つではありません。**配列はPOINTER **ではありません。それはあなたがそれ以上の問題を引き起こす前に、あなたの頭からその誤った概念を取得します。 – Mankarse

答えて

4

について:ないのはなぜ

template <size_t N> 
void foo(double (&array)[N]); 
2

void foo(double *& bar) 
+1

これは、参照を介してポインタを渡します。これは、配列が必要な場合にはかなり役に立たなくなります。 –

0

別の可能性が使用する任意のサイズのために

void foo(double (&array)[100]); 

構造体をpへのラッパーとして配列を取り除くと、これは場合によってはより便利になります。例:

const int N = 100; 

struct ArrayWrapper 
{ 
    double adouble[N]; 
}; 

void foo(ArrayWrapper& wrapper) 
{ 
    // ... 
}