Как я могу создать (статический констант?) Экземпляр класса внутри себя (т.е. класс Color)? - PullRequest
3 голосов
/ 21 ноября 2011

Я пытаюсь создать класс для цветов. Что-то вроде:

class Color
{
public:
  float r, g, b, a;
  Color(float r_, float g_, float b_, float a_);
...
}

И для удобства я хотел бы включить экземпляры класса как часть класса, чтобы мне не нужно было указывать значения rgba для общих цветов как таковые:

image.setPixel(100, 100, Color::Red);

Однако я не знаю, каков правильный синтаксис для этого. Я некоторое время искал в Google и не смог найти термин для этого метода :(. Я видел, как это делалось в других библиотеках, поэтому я думаю, что это возможно. быть объявленным как статическая константа, но я не уверен в этом:

class Color
{
public:
  static const Color Red;
...
}

const Color::Color Red = Color(255, 0, 0, 255);

Но я получаю

ошибка, сообщающая, что Color :: Color является недопустимым типом

Что я делаю не так?

1 Ответ

10 голосов
/ 21 ноября 2011

Красный - член, он должен быть:

const Color Color::Red = Color(255, 0, 0, 255);
...