2013-05-20 30 views
1

考慮以下幾點:如何在基類中使用初始化列表?

struct A 
{ 
    int foo; 
    int bar; 
}; 

struct B : public A 
{ 
    int baz; 
}; 

我將如何構建一個初始化列表還建在A元素的B?以下似乎沒有工作,但我正在尋找類似:

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

回答

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仍然是一個聚合,因此您可以使用聚合初始化。

+0

是的,我錯過了我的代碼中的東西。固定。 – fbrereto

+0

@fbrereto:看我的編輯。 –

相關問題