2015-05-25 94 views
0

我不知道如何在C++中調用它,但我想要做的是創建 表示Color的常規類,該類的幾個成員是相同類型的階級是這樣的:(不工作)靜態初始化C++中同一類的成員

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 
+0

它以什麼方式「不工作」? –

回答

1

由於您的常量駐留內Color,你必須定義它們是這樣的:

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

您需要將static成員資格在他們的定義:否則

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

,你宣佈無關的變量。