c++ - C++中的静态常量 double

标签 c++ static

这是使用静态常量变量的正确方法吗?在我的顶级类(class)中(形状)

#ifndef SHAPE_H
#define SHAPE_H

class Shape
{
public:

    static const double pi;
private:
    double originX;
    double originY;
};

const double Shape::pi = 3.14159265;

#endif

然后在扩展 Shape 的类中,我使用 Shape::pi。我收到链接器错误。我将 const double Shape::pi = 3.14... 移动到 Shape.cpp 文件,然后我的程序进行编译。为什么会这样?谢谢。

最佳答案

如果您有办法向您的编译器添加 C++11(或更高版本)标志,您将能够做到:

ifndef SHAPE_H
#define SHAPE_H

class Shape
{
public:

    static constexpr double pi = 3.14159265;
private:
    double originX;
    double originY;
};

#endif

C++11 开始,您可以将 const 表达式用于整数以外的类型。这使您能够就地声明和定义常量变量。

更多详情:https://en.cppreference.com/w/cpp/language/constexpr

关于c++ - C++中的静态常量 double ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2777541/

相关文章:

c++ - 在 QTCreator Undefined Reference 中使用库

c++ - 跨动态链接库的模板静态类

java - 除非那些内部类也被声明为静态,否则我们不能在 [public] 内部类中声明静态方法的确切原因是什么?azi

java - 重复的静态字段(数组与字符串)

java - 从服务访问静态变量

c++ - 获取插入 vector 中的对象的索引

c++ - 矩阵模板类中的重载运算符* =和Operator +

java - 静态方法不能直接调用非静态方法

c++ - g++: 没有那个文件或目录?

java - firefox缓存散列键生成算法bug