c++ - 将一个类的static const数据成员初始化为一个类

标签 c++ static constructor constants initializer-list

假设我们在头文件中有这个:

class A
{
private:
     static const double x;
public:
    A(double given_x);
};

class B
{
private:
    static const double x;
    class A;
public:
     B(double x_given);
};

并且我们需要在初始化的时候初始化类A的static const数据成员。
我认为将带有初始化列表的变量 x_given 从 B 类的构造函数传递给 A 类是可以的,但我显然错了。

如何做到这一点?

此外,两个类可能需要具有相同的数据成员。

编辑#1: 我需要声明一个 const 变量,以确保它在类成员函数中的任何地方都不会被更改。 但是这个值是在构建时给出的。

最佳答案

静态成员具有静态存储持续时间,因此它不会等到对象创建后才进行初始化。当你有一个整数类型的 const 静态成员时,你可以在那里然后在类定义中初始化它。但是,由于您的类型是 double,因此您需要在单个翻译单元中定义它(例如在您的 A 类的实现文件中):

const double A::x = 48151623.42;

关于c++ - 将一个类的static const数据成员初始化为一个类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15045921/

相关文章:

php - 使用 PHP 编译 C++

c++ - 使用 c-plus-plus 连接到 firebird db

PHP 静态方法/单例模式

c++ - 静态函数

c++ - 这是正确的 : virtual method of Derived called before constructing Base object?

c++ - 从派生类到基类的static_cast会发生什么?

c++ - 绘画后winapi窗口不刷新

c++ - if >= 条件更改全局数组中元素的值

c++ - 链表静态类成员

c# - 类及其嵌套类的一个构造函数