带有数组的 C++ 构造函数初始化列表
Posted
技术标签:
【中文标题】带有数组的 C++ 构造函数初始化列表【英文标题】:C++ Constructor initialization list with array 【发布时间】:2016-03-02 18:29:24 【问题描述】:我在这里做错了什么?编译器告诉我这是一个语法错误。
class Color
private:
float rgba[4];
public:
Color(float red, float green, float blue, float alpha=1.0):
this->rgba[0] (red * alpha),
this->rgba[1] (green*alpha)
this->rgba[2] (blue*alpha)
;
【问题讨论】:
我知道这可能只是一个家庭作业。但请检查您的图形库是否真的需要将 RGBA 预乘以 A 乘以 A 是不是一个坏主意?你能告诉我更多关于它的信息吗? “A”的原因是一次更改所有颜色,处理叠加图像等。通常图形硬件会在显示时进行乘法运算。this->rgba[0]
是一个错误。在:
之后唯一可以出现的是成员标识符,即rgba
是这个类的唯一选项
【参考方案1】:
应该是
Color(float red, float green, float blue, float alpha=1.0):
rgbared * alpha, green*alpha, blue*alpha, 0
【讨论】:
这假定编译器兼容 C++11。有些人仍然没有使用 C++11。 有些人还没有发现电脑,所以我们应该把这个答案打印出来并做传单投递【参考方案2】:您可以使用 asigment 运算符代替括号:
this->rgba[0](red * alpha) // wrong
this->rgba[1] = red * alpha // ok
【讨论】:
以上是关于带有数组的 C++ 构造函数初始化列表的主要内容,如果未能解决你的问题,请参考以下文章