0

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

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类的静态常量数据成员。
我认为将x_given带有初始化列表的变量从 B 类的构造函数传递给 A 类是可以的,但我显然错了。

如何才能做到这一点?

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

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

4

1 回答 1

1

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

const double A::x = 48151623.42;
于 2013-02-23T21:40:34.393 回答