如何在类构造函数中初始化Structure

时间:2019-08-05 09:21:39

标签: c++ c++11

我有这个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的值,而不用写三行。

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