2016-03-02 86 views
0

我在这里做错了什么?编译器告诉我这是一个语法错误。带数组的C++构造函数初始化列表

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) 
    { 

    } 
}; 
+0

我知道这可能只是一个课外练习。但检查你的图形库是否真的需要RGBA预乘A –

+0

乘以A是一个坏主意吗?你能告诉我更多关于它吗? –

+0

“A”的原因是一次改变所有颜色,以处理重叠图像等。通常,图形硬件将在显示时间进行乘法运算。 –

回答

4

应该

Color(float red, float green, float blue, float alpha=1.0): 
      rgba{red * alpha, green*alpha, blue*alpha, 0} 
    { 

    } 
+0

这个假定符合C++ 11的编译器。有些人仍然没有使用C++ 11。 –

+0

有些人还没有发现电脑,所以我们应该打印这个答案,并做一个传单下降 –

0

可以使用asigment操盘parentetheses的:

this->rgba[0](red * alpha) // wrong 
this->rgba[1] = red * alpha // ok 
相关问题