如何在C++中声明静态常量结构

How do I declare a static const struct in C++?

本文关键字:静态 常量 结构 声明 C++      更新时间:2023-10-16

我有一个LEDControl类,它使用一种方法设置LED的颜色。许多类使用此LEDControl类来传递一些颜色以分配给 LED。因此,我想将某处的颜色定义为常量。

我想我会在我的LEDControl类中制作一个名为 Color 的结构,因为我真的只需要直接访问成员,而不需要其他任何东西:

struct Color{
    bool r;
    bool g;
    bool b;
};

然后我在.cpp中添加了一个 #define

#define RED Color{true, false, false};

但这不起作用;它没有在任何其他类的范围内声明。

我可以做些什么来在我的程序中的某个位置存储一组颜色,以便使用该LEDControl的每个类都可以使用关键字或变量名称,如 RED 和 GREEN?

不要使用宏,而是提供structinline constexpr实例:

namespace color
{
    inline constexpr Color red{true, false, false};
    inline constexpr Color green{false, true, false};
    inline constexpr Color blue{false, false, true};
}

您可以在头文件中提供它们,以便可以从包括它在内的任何文件访问它们。

将定义放在标题中。请避免#define
它可能看起来像:

static constexpr Color RED{true, false, false};