我已經定義了一個結構如下:結構初始化/分配
struct float3 {
float x;
float y;
float z;
float3() : x(0), y(0), z(0) {}
float3 (float a, float b, float c) : x(a), y(b), z(c) {}
};
但我有麻煩,當涉及到理解初始化/其成員分配值的不同方式。例如:
//Initialization
float3 3Dvec = {1.0, 1.0, 1.0};
float3 3Dvec2 {1.0, 1.0, 1.0};
float3 3Dvec3 (1.0, 1.0, 1.0);
//Assignment
3Dvec = {2.0, 2.0, 2.0};
3Dvec = float3 (2.0, 2.0, 2.0);
所有這些選項都可以使用-std = C++ 11。但是,在帶有-std = C++ 0x的大型編譯器中,花括號初始化/賦值不起作用。使用大括號是不好的做法嗎?哪個選項更適合習慣?
你應該寫代碼,以任一C++ 11或C++ 03標準,而不是一些中途點(其你的舊編譯器似乎是)。你在這裏展示的是一個很好的C++ 11實踐。 – juanchopanza
@juanchopanza我不同意這裏;爲什麼不充分利用它所支持的C++ 11功能來提供可用的編譯器。例如,我們正在使用gcc 4.8和VS 2010;我們是否應該因爲VS2010不支持'constexpr'而辭去lambdas,智能指針,'auto'和移動語義? – Angew
@Angew如果你完全控制你的中途點編譯器,那很好。否則,它的可移植性太差了。這正是我想要了解的。 – juanchopanza