如何以现代优雅的 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/