3

次のコードがコンパイルされないのはなぜですか:

#include <array>

struct A
{
    std::array<size_t, 5> i_;

    A() {}

    A( A const& a)
    : i_{ a.i_ } {}
};

int main()
{
    A a1;
    A a2 = a1;

    return 0;
}

GCC 4.8.1 は言う

エラー: 初期化で 'const std::array' を 'long unsigned int' に変換できません: i_{ a.i_ }

4

2 に答える 2

4

問題はstd::array、それが集約であるため、中かっこを使用して copy-ctor を呼び出すことができないことです。要素を指定する必要があります。a.i_これはまた、あなたのエラーメッセージを説明しています.を配列の要素に変換しようとしていsize_tます. それができないので、 を使用してコピーを作成する必要があります。i_(a.i_)

于 2013-10-14T19:43:27.630 に答える
2

そのはず

A( A const& a )
: i_( a.i_ ) {}
于 2013-10-14T19:38:26.567 に答える