error: ‘constexpr’ needed for in-class initialization of static data member ‘ImageSaveInstance* ImageSaveInstance::m_instance’ of non-integral type [-fpermissive]
时间: 2024-03-21 15:43:12 浏览: 55
这个错误信息意味着你在非整数类型的静态数据成员 `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 'Test* my_ptr<Test>::nil' of non-integral type
这个问题是关于 C++ 中静态数据成员初始化的问题。在 C++17 之前,如果你想在类定义内为静态数据成员进行初始化,你需要将它定义为 const 类型。但是对于非整型类型的静态数据成员,你需要使用 `constexpr` 关键字来进行定义和初始化。因此,在这个问题中,编译器提示需要使用 `constexpr` 来初始化 `Test* my_ptr<Test>::nil` 这个非整型类型的静态数据成员。
[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` 来进行类内初始化,这样就可以避免上述错误。
阅读全文