2014-12-05 54 views
4

我正在尋找一個簡單的如何使用初始化程序列表的示例。這是我想做的事: 我有下面的類:初始化程序列表的一個簡單示例

class foo{ 
    public: 
     void set_x(const int ix); 
     void set_y(const int iy); 
     void display(); 
    private: 
     int x; 
     int y; 
}; 

我想創建通過以下方式這個類的一個對象:

foo fooObj = {1, 2}; 

我知道它在C++ 11中可以使用矢量。我怎樣才能實現這種行爲?

+5

定期的雙參數構造函數將正常工作,如果它是一個聚合類型,那麼根本不需要任何動作 – 2014-12-05 17:14:32

+3

[Doing nothing](http://coliru.stacked-crooked.com/a/426aa6331b0851fb)就足夠了。 'foo'是一個聚合。 – 2014-12-05 17:14:58

+0

對不起,我在我的例子中犯了一個錯誤。變量應該是私人的。 – 2014-12-05 17:19:01

回答

6

在這種情況下,一個簡單的構造將工作:

foo(int x, int y) : x(x), y(y) {} 

如果該類是一個更簡單的(這你的是,如果數據成員是公開的),那麼你甚至不需要 - 這種初始化方式將依次初始化聚合的每個成員。

對於更復雜的事情,如vector,其中參數的數量可能會有所不同,您需要使用initializer_list。包含頭:

#include <initializer_list> 

和一個構造

foo(std::initializer_list<int>); 

類型的行爲等的容器,具有begin()end()size()函數來訪問其內容。