‘constexpr’ needed for in-class initialization of static data member ‘ImageSaveHeadInstance* ImageSaveHeadInstance::m_instance’ of non-integral type [-fpermissive] static ImageSaveHeadInstance * m_instance = nullptr;
时间: 2024-03-28 07:39:12 浏览: 16
这个错误是因为在类的定义中对非整型的静态数据成员进行了初始化,而未使用 `constexpr` 关键字。`constexpr` 用于指定值可以在编译时计算,因此可以在类的定义中对静态数据成员进行初始化。如果静态数据成员是非整型的,则需要使用 `constexpr` 关键字使其在编译时计算。如果静态数据成员是整型,则不需要使用 `constexpr` 关键字也可以在类的定义中进行初始化。
相关问题
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;
```
[Error] 'constexpr' needed for in-class initialization of static data member 'const double Circle::pi' of non-integral type
这个错误提示是因为你在定义一个非整型的静态数据成员时,需要用 `constexpr` 来进行类内初始化。
例如,如果你有一个 `Circle` 类,声明了一个静态的 `const double` 类型的 `pi` 常量,可以这样写:
```c++
class Circle {
public:
static constexpr double pi = 3.14159265358979323846;
// ...
};
```
这里使用了 `constexpr` 来进行类内初始化,这样就可以避免上述错误。