假设我们在头文件中有这个:
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类的静态const数据成员
我认为将带有初始化列表的变量x_given
从B类的构造函数传递给A类是可以的,但我显然是错的。
如何做到这一点?
此外,两个类可能需要具有相同的数据库。
编辑#1: 我需要声明一个const变量,以确保它不会在类成员函数中的任何位置更改。 但是这个值是在施工时给出的。
答案 0 :(得分:1)
静态成员具有静态存储持续时间,因此它不会等到对象在初始化之前创建。如果你有一个const
整数类型的静态成员,你可以在那里初始化它,然后在类定义中初始化它。但是,由于您的类型为double
,因此您需要在单个翻译单元中定义它(例如在A
类的实现文件中):
const double A::x = 48151623.42;