1

以下を考えると:

struct A
{
    int foo;
    int bar;
};

struct B : public A
{
    int baz;
};

Bの要素も構築する初期化リストを使用してを構築するにはどうすればよいAですか? 以下はうまくいかないようですが、次のようなものを探しています:

B my_b{{1, 2}, 3}; // foo = 1, bar = 2, baz = 3
4

1 に答える 1

3

明示的なコンストラクターを追加して、多くの作業を自分で行わないとできません。

struct B : public A
{
  B(const A &a, int _baz) : A{a}, baz{_baz} {}
  int baz;
};

B my_b{{1, 2}, 3};

Bそして、そのコンテナーをのメンバーと同期させておく必要があります。

継承の代わりに包含を使用した場合Bでも、集約であるため、集約の初期化を使用できます。

于 2013-05-20T19:11:38.530 に答える