2013-05-31 45 views
-3

比方說,我有一個簡單的結構是這樣的:有沒有一種方便的方法來初始化C++中的簡單結構?

struct Simple 
{ 
    int weight; 
    std::string name; 
    float power; 
}; 

我希望能夠初始化這些一個沒有爲它創造一個構造函數,而不必單獨設置其參數。我的夢想像這樣的語法,例如:

Simple s(4, "bill", 3.1f); 

......或許......

Simple s = { 4, "bill", 3.1f }; 

...或...實在

Simple s{ 4, "bill", 3.1f }; 

我知道我可以通過添加我自己的braindead構造函數來獲得第一個示例。乏味。

同樣,最後一個例子將在C++ 11中工作,但我相信我必須提供構造函數。

有沒有一種方法來簡單和優雅地初始化C++結構而不必提供構造函數?

+3

[你嘗試過那些](http://ideone.com/JONZQp)? –

+2

你的第二個版本應該適用於任何版本的C++。 –

回答

3
Simple s = { 4, "bill", 3.1f }; 

Simple s{ 4, "bill", 3.1f }; 

這些都是有效的。

此語法將根據順序將上述組/集中的每個值映射到每個結構成員變量,而且甚至不需要定義構造函數。

+0

嗯。想知道爲什麼它不適合我。編譯器支持可能。 – OldPeculier

+0

幾個月前,我就是這樣。我更新了我的編譯器,這一切都奏效了。 –

相關問題