【问题标题】:How can I create a (static const?) instance of a class inside itself (ie. a Color class)?如何在自身内部创建一个类的(静态常量?)实例(即 Color 类)?
【发布时间】:2011-11-21 05:30:16
【问题描述】:

我正在尝试为颜色创建一个类。比如:

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

为了方便起见,我想将类的实例作为类的一部分包含在内,这样我就不需要为常见颜色指定 rgba 值:

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

但是,我不知道正确的语法是什么。我已经在谷歌上搜索了一段时间,但我一直无法找到这种方法的术语:(。我以前在其他库中看到过它,所以我认为这是可能的。我认为它有被声明为静态常量,但我不确定:

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

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

但我得到了一个

错误提示 Color::Color 是无效类型

我做错了什么?

【问题讨论】:

    标签: c++ compiler-errors constants static-members


    【解决方案1】:

    红色是会员,应该是:

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

    【讨论】:

    • 谢谢!我不敢相信我花了这么多时间在这样一个简单的错误上 D:。我要去吃一块饼干让自己感觉好点。
    • 此外,这一行应该在.cpp文件中,而不是标题中。
    • 我不喜欢等号:const Color Color::Red(255, 0, 0, 255);
    猜你喜欢
    • 2019-06-28
    • 1970-01-01
    • 2015-08-13
    • 2010-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-25
    相关资源
    最近更新 更多