两种方法
外部初始化
在C++中,你不能直接在类定义中初始化静态成员变量。你需要在类外部进行初始化。这是因为在类定义中,你只是声明了静态成员,而初始化涉及到存储分配,这通常在编译时不能决定。
class MyClass {
public:
static double myStaticVar;
};
double MyClass::myStaticVar = 3.14;
内部初始化
在C++17及以后的版本中,你可以使用内联变量(inline variable)直接在类定义中初始化静态成员变量,如下所示:
class MyClass {
public:
inline static double myStaticVar = 3.14;
};
但是,这仍然是一个定义,而不仅仅是一个初始化。它告诉编译器这个定义应该在多个翻译单元中合并成一个。这与在类外部定义静态成员变量的效果相同,但是语法更简洁。