なぜ私はstd :: arrayをこのように脱塩できないのですか?なぜ私はstd :: arrayをこのように脱塩できないのですか?
#include <array>
struct Point
{
float x;
float y;
};
int main()
{
std::array<Point, 3> m_points {
{ 1.0f, 1.0f },
{ 2.0f, 2.0f },
{ 3.0f, 3.0f }
};
}
これをやって私が取得エラー:
error: too many initializers for
std::array<Point, 3ul>
が、それは次のように動作します。
std::map<int, int> m1 {std::pair<int, int>{1,2}, std::pair<int, int>{3,4}};
std::map<int, int> m2 {{1,2}, {3,4}};
:コントラスト
std::map
に
std::array<Point, 3> m_points {
Point{ 1.0f, 1.0f },
Point{ 2.0f, 2.0f },
Point{ 3.0f, 3.0f }
};
は以下の書かれた両方の方法で初期化することができ
中カッコが間違っていますか? 'std :: array m_points {{{1.0f、1.0f}、{2.0f、2.0f}、{3.0f、3.0f}}}'を試してください。 [動作するように思える...](http://coliru.stacked-crooked.com/a/747be1b02cacb8e2) –
ildjarn
私は問題は、コンパイラが最初の例でどのような構造体を初期化したいのか分からないことだと思います。あなたが配列に型を伝えていても、 'Point'が必要なのはわかりません。 – meetaig
@meetaigは私のようにも見えますが、同じ種類のコードは' std :: map'で動作します。 std :: map m {std :: pair {1,2}、std :: pair {3,4}}; 'std :: map m {1,2}を書くことができます。 、3,4}}; '違いは何ですか? –
Narek