当我想将静态指针作为类的成员时,我需要 constexpr
来使用 nullptr
进行初始化。
class Application {
private:
constexpr static Application* app = nullptr;
}
有人可以解释一下为什么我需要这样做吗?我找不到在编译时必须存在静态变量的确切原因。
最佳答案
那是因为您在类定义中对其进行了初始化。这只允许常量整数和枚举类型(始终)和 constexpr
数据成员(C++11 起)。通常,您会在定义它的地方(在类之外)对其进行初始化,如下所示:
Application.h
class Application {
private:
static Application* app;
}
应用程序.cpp
Application* Application::app = nullptr;
请注意,即使在 constexpr
情况下,您也需要提供类外定义,但它不能包含初始化程序。不过,我相信第二种情况是您真正想要的。
关于c++ - 静态类成员的初始化。为什么要构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34979266/