c ++中同一类的类成员的静态初始化

时间:2015-05-25 19:40:25

标签: c++ static

我不知道如何在c ++中调用它,但我想要做的就是创建 表示Color的常规类,该类的几个成员与类的类型相同:(不工作)

class Color
{
public:
    Color();
    Color(const Color& color);
    Color(float r, float g, float b, float a);
    ~Color();
   static const Color CLEAR;
   static const Color WHITE;
   static const Color BLACK;
   static const Color RED;

private:
    void set(Color color);
    / 
    float r, g, b, a;
};

/// c ++文件:     #include“Color.h”

 Color CLEAR(0, 0, 0, 0);
 Color WHITE(1, 1, 1, 1);
 Color BLACK(0, 0, 0, 1);
 Color RED(1, 0, 0, 1);

Color::Color()
{
}
Color::Color(float r, float g, float b, float a) 
{
    r = r;
    g = g;
    b = b;
    a = a;

}
Color::Color(Color& color)
{
    set(color);
}
void Color::set(Color color)
{
    r = color.r;
    g = color.g;
    b = color.b;
    a = color.a;

}
Color::~Color()
{
}

所以我可以打电话给代码:

Color c = Color::WHITE; // or Color.WHITE

2 个答案:

答案 0 :(得分:1)

由于你的常量位于Color内,你必须像这样定义它们:

const Color Color::CLEAR(0, 0, 0, 0);
//          ^^^^^^^
//          Qualification of static class member.
//
// Instead of:
Color CLEAR(0, 0, 0, 0);

答案 1 :(得分:0)

您需要在其定义中限定static成员:

Color Color::WHITE(1,1,1,1);
// ...

否则,你宣布不相关的变量。