程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了有没有办法在 C++ 中的此类命名空间内定义某个类的全局常量?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决有没有办法在 C++ 中的此类命名空间内定义某个类的全局常量??

开发过程中遇到有没有办法在 C++ 中的此类命名空间内定义某个类的全局常量?的问题如何解决?下面主要结合日常开发的经验,给出你关于有没有办法在 C++ 中的此类命名空间内定义某个类的全局常量?的解决方法建议,希望对你解决有没有办法在 C++ 中的此类命名空间内定义某个类的全局常量?有所启发或帮助;

假设我有一个名为 color 的 C++ 结构

struct color {
    float r,g,b;
};

以及一个接受 color 对象并对其进行处理的函数:

voID func(const color & color) {...}

通常,我使用动态构建的 color 对象调用此函数:

func(color{0.1,0.2,0.3});

但是我经常使用某些颜色,例如黑色、白色和红色。所以我发现自己经常这样做:

func(color{0.0,0.0,0.0}); // black
func(color{1.0,1.0,1.0}); // white
func(color{1.0,0.0}); // red

我想做的是

func(color::black);
func(color::whitE);
func(color::red);

所以我正在寻找一种方法来在 color 命名空间内定义 color 类型的全局常量。到目前为止,我已经尝试了这两个选项:

选项1:定义一个与struct同名的命名空间;由于命名空间冲突而无法工作。

struct color {
    float r,b;
};

namespace color {
    const color black{0.0,0.0};
    const color white{1.0,1.0};
    const color red{1.0,0.0};
}

选项2:结构体定义内的静态变量;不起作用,因为这会使结构定义不完整。

// static members
struct color {
    float r,b;

    static color red = color{1.0,0.0};
};

有没有办法实现我想要的,或者至少是类似的?

解决方法

struct Color {
    float r,g,b;

    static const color red;
};

constexpr Color Color::red{1.0,0.0,0.0};

大佬总结

以上是大佬教程为你收集整理的有没有办法在 C++ 中的此类命名空间内定义某个类的全局常量?全部内容,希望文章能够帮你解决有没有办法在 C++ 中的此类命名空间内定义某个类的全局常量?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。