【发布时间】:2016-07-20 07:22:35
【问题描述】:
给定一个玩具struct,它有一个像这样的默认构造函数:
struct RGB {
unsigned char r, g, b;
RGB()
:r(0), g(0), b(0) {}
};
假设我无权访问源代码来添加我自己的构造函数,我如何将一个初始化为特定颜色。
我不完全理解为什么这些不起作用:
// OK, I can sort-of accept this one
RGB red = {255, 0, 0};
// Not shorthand for green.r=0, green.g=255, green.b=0;?
RGB green = {.r = 0, .g = 255, .b = 0};
// I seem to be missing a constructor that accepts a list?
RGB blue{0, 0, 255};
还有其他 C++11 方法可以缩短老式的:
RGB yellow;
yellow.r = 255;
yellow.g = 255;
yellow.b = 0;
此外,我怎样才能最小限度地修改struct 声明以支持上述任何一种,以及具有默认初始化方法。
【问题讨论】:
标签: c++11 initialization