我有这个Structure,它是名为Material的类的成员。
struct RGBColor
{
float r;
float g;
float g;
};
在类构造函数中,我可以将Material对象初始化为1
Material.r = 1.0;
Material.g = 1.0;
Material.b = 1.0
因为我必须将所有成员初始化为相同的值,所以我可以将材料本身初始化为1的值,而不用写三行。
答案 0 :(得分:1)
由于该问题被标记为C ++ 11,因此您可以提供该结构的默认值。
struct RGBColor
{
float r{1.0f};
float g{1.0f};
float b{1.0f};
};
它不会阻止使用其他值进行初始化。
RGBColor c{0.7f, 0.7f, 0.7f};
您还可以提供专用的构造函数
struct RGBColor
{
RGBColor() =default; // for default init
explicit RGBColor(float grey) : r{grey}, g{grey}, b{grey} {}
RGBColor(float r, float g, float b) : r{r}, g{g}, b{b} {}
float r{1.0f};
float g{1.0f};
float b{1.0f};
};
那么用法可能是
RGBColor c1; // all 1.0f
RGBColor c2{0.7f, 0.7f, 0.7f};
RGBColor c3{0.5f}; // all 0.5f