'constexpr' needed for in-class initialization of static data member 'Test* my_ptr<Test>::nil' of non-integral type
时间: 2024-05-20 11:10:32 浏览: 10
这个问题是关于 C++ 中静态数据成员初始化的问题。在 C++17 之前,如果你想在类定义内为静态数据成员进行初始化,你需要将它定义为 const 类型。但是对于非整型类型的静态数据成员,你需要使用 `constexpr` 关键字来进行定义和初始化。因此,在这个问题中,编译器提示需要使用 `constexpr` 来初始化 `Test* my_ptr<Test>::nil` 这个非整型类型的静态数据成员。
相关问题
error: ‘constexpr’ needed for in-class initialization of static data member ‘ImageSaveInstance* ImageSaveInstance::m_instance’ of non-integral type [-fpermissive]
这个错误信息意味着你在非整数类型的静态数据成员 `ImageSaveInstance::m_instance` 上使用了 in-class 初始化而没有使用 `constexpr` 关键字。要解决这个问题,你需要在类定义中将 `m_instance` 声明为 `constexpr` 或在类外定义中初始化它。例如:
```cpp
class ImageSaveInstance {
public:
static constexpr ImageSaveInstance* m_instance = nullptr;
// ...
};
// 或者在类外初始化
constexpr ImageSaveInstance* ImageSaveInstance::m_instance = nullptr;
```
‘constexpr’ needed for in-class initialization of static data member ‘ImageSaveHeadInstance* ImageSaveHeadInstance::m_instance’ of non-integral type [-fpermissive] static ImageSaveHeadInstance * m_instance = nullptr;
这个错误是因为在类的定义中对非整型的静态数据成员进行了初始化,而未使用 `constexpr` 关键字。`constexpr` 用于指定值可以在编译时计算,因此可以在类的定义中对静态数据成员进行初始化。如果静态数据成员是非整型的,则需要使用 `constexpr` 关键字使其在编译时计算。如果静态数据成员是整型,则不需要使用 `constexpr` 关键字也可以在类的定义中进行初始化。