c++ - 如何以最优雅的 c++ 方式设计一个已经预定义标准颜色的颜色类?
问题描述
如何以现代优雅的 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;
如何实现上述目标?
提前谢谢。
解决方案
通过稍微不同的语法,您可以使用静态成员函数:
struct Colour {
double rgb[3];
static constexpr Colour Red() {
return {1, 0, 0};
}
};
auto red = Colour::Red();
或者,您可以将标准颜色放入一个特殊的命名空间:
namespace Colours {
inline constexpr auto Red = Colour{1, 0, 0};
}
auto red = Colours::Red;
推荐阅读
- python - 任何人都可以解释 OOP 的概念并更正此代码吗
- android - 错误:找不到符号类 ActivityCompat
- c - 如何打开用户指定的 COM 端口?
- calendar - power bi 中用户定义的日历表
- javascript - onPrint 功能或用户打印时记录的方法
- javascript - 如何在 JavaScript 中使用 getElementByID 连接到我的 HTML 下拉框?
- javascript - 管理对同一个 Apollo 突变的多次调用
- javascript - 在没有博览会的情况下工作 Three.js 的问题(使用 react-native-unimodules)
- angular - 下表中的 CSS Bootstrap 列表
- html - 从 trello 公共卡获取图像 xpath