1. ホーム
  2. c++

[解決済み] C++で配列を参照渡しする

2023-04-04 20:25:35

質問

は、配列を参照渡ししてもよいのでしょうか?

 void foo(double& *bar) 

私のコンパイラはダメだと言っているようです。なぜですか?配列を参照で渡すための適切な方法は何ですか?または回避策は?私は、私のメソッドが変更する必要があり、後で取得する必要がある配列の引数を持っています。代わりに、私はこの配列をクラスのメンバーにすることができ、それはうまくいきますが、私のコードの他の部分(私が避けたいもの)のために多くの欠点があります。

ありがとうございます、そしてよろしくお願いします。

解決方法を教えてください。

配列は、実は参照渡ししかできないのです。

void foo(double (&bar)[10])
{
}

というようなことができなくなります。

double arr[20];
foo(arr); // won't compile

に任意のサイズの配列を渡せるようにする。 foo に渡すことができるようにするには、これをテンプレート化し、コンパイル時に配列のサイズを取得するようにします。

template<typename T, size_t N>
void foo(T (&bar)[N])
{
    // use N here
}

を使うことを真剣に検討すべきです。 std::vector を使うか、c++11 をサポートするコンパイラを持っているのであれば std::array .