我試着像這樣(這犯規編譯):如何使用初始化列表來初始化數組元素?
struct mystruct {
somestruct arr[4];
mystruct(somestruct val) : arr[0](val), arr[1](val), arr[2](val), arr[3](val) {}
};
如何在C這個做得最好++?
注意:我可能只想用這種方法設置數組元素的的一些。
我試着像這樣(這犯規編譯):如何使用初始化列表來初始化數組元素?
struct mystruct {
somestruct arr[4];
mystruct(somestruct val) : arr[0](val), arr[1](val), arr[2](val), arr[3](val) {}
};
如何在C這個做得最好++?
注意:我可能只想用這種方法設置數組元素的的一些。
在C++ 11,如果你想設置的所有元素:
mystruct(somestruct val) : arr{val,val,val,val} {}
在C++ 03或C++ 11,如果你只是想設置一些要素:
mystruct(somestruct val) {
arr[0] = val;
arr[1] = val;
arr[2] = val;
arr[3] = val;
}
太糟糕了,它不適用於visual-C++編譯器,即時使用後者,認爲有更好的方法。順便說一句,編譯器是否像上面那樣快地優化後者? – Rookie 2011-12-30 17:56:43
爲了編譯,您可能需要使用-std = C++ 11標誌。您應該擁有某種可以設置它的偏好設置窗格。 – 2014-03-05 21:09:56
使用'-std = C++ 0x'編譯器選項,我所做的全部都是'classname :: clasname():array {num1,num2,num3,num4} {/ *所有構造函數或方法或變量賦值都放在這裏*/}'。我最初對你的解決方案的末尾有些'{}'感到困惑,但後來很快意識到它是構造函數的主體:-) – enthusiasticgeek 2014-12-29 02:09:42
可能重複[我如何使用成員初始化列表來初始化它?](http://stackoverflow.com/questions/5602030/how-can-i-use-member-initialization-list-to-initialize-it ) – ildjarn 2011-12-30 17:50:05
+1用於嘗試使用初始化程序列表,而不是在構造函數的主體內分配值。 – Andre 2011-12-30 17:56:41
@Andre,與「在構造函數體內賦值」有什麼不同嗎? (我不能測試,因爲我沒有編譯器,邁克的例子使用) – Rookie 2011-12-30 17:58:10