如何以现代优雅的 C++ 方式设计一个已经预先定义了标准颜色的 Color 类?
我想知道一个最小的示例设计,而不是一个完整的颜色类。

我有基本的颜色类:

class Colour
{
    public:
    double rgb[3];
};

现在我可以通过以下方式使用它:
Colour c1 = {1.0, 0.0, 0.0}, c2 = {1.0, 1.0, 0.0};

但是因为已经有标准颜色对我们来说非常常见,我们将永远喜欢使用
类似于以下内容:
Colour c1 = Colour::Red, c2 = Colour::Yellow;

如何实现上述目标?

提前谢谢。

最佳答案

如果您愿意在 Colour 类中提供转换构造函数,那么您可以将标准颜色定义为数组,然后在构造时转换为 Color 对象。

#include <array>

struct Colour {
    Colour(std::array<double, 3> _rgb) : rgb(_rgb) {}

    std::array<double, 3> rgb;

    static constexpr auto Red = std::array<double, 3>{1.0, 0.0, 0.0};
    static constexpr auto Yellow = std::array<double, 3>{1.0, 1.0, 0.0};
};

Colour c1 = Colour::Red, c2 = Colour::Yellow;

关于c++ - 如何以最优雅的c++方式设计一个已经预定义标准颜色的颜色类?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58462213/

10-13 08:30