警告:非静态数据成员初始值设定项 - c++
Warning: non-static data member initializers - c++
我用 c++ 做了以下程序,并收到了编译警告:
warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11 [enabled by default]
什么意思?
struct struct1 {
int i = 10;
};
int main() {
struct1 s1;
cout << s1.i;
return 0;
}
静态数据初始值设定项是在类范围之外完成的初始值设定项。在这种情况下,它指的是您使用 int i = 10;
所做的内联初始化。但是,如果您这样做,此代码也不会喜欢它:
struct struct1 {
int i;
};
int struct1::i=10;
在这种情况下,您正在初始化i
就好像所有struct1
共享i
一样,但它们都有自己的共享。
在旧版本的 C++ 中,解决此问题的唯一方法是初始化构造函数中的值:
struct struct1 {
int i;
struct1(): i(10) {}
};
在C++11中,标准委员会决定允许人们按照你想要的方式初始化值,大概是为了避免这种混淆(尽管我不了解这些事情)。
相关文章:
- 如果C++类在类方法中具有动态分配,但没有构造函数/析构函数或任何非静态成员,那么它仍然是POD类型吗
- #为""定义宏;静态";针对不同的上下文
- cmake如何在fedora工作站中找到boost静态库包
- 静态数据成员的问题-修复链接错误会导致编译器错误
- 将公共但非静态的成员函数与ALGLIB集成
- cmake在我的项目中所需的所有静态库都不成功
- C++从另一个类访问公共静态向量的正确方法是什么
- 基于boost的程序的静态链接——zlib问题
- 在静态库中嵌入类方法
- Qt C++静态thread_local QNetworkAccessManager是线程应用程序的好选择吗
- 如何在C++中获得"静态纯虚拟"功能?
- 私有类型的静态常量成员
- 使用gcc从静态链接的文件中查找可选符号
- 在 .h 文件中的类中声明静态变量和在.cpp文件中声明"global"变量有什么区别
- 如何在C++中使用非静态成员函数作为回调函数
- 将静态库链接到不带-fPIC的共享库中
- 静态结构和一个定义规则
- 为什么虚函数不能是静态的和全局的?
- C++17中函数模板中的静态数组初始化(MSVC 2019)
- 停止cmake target_link_libraries将插件中静态库的两个对象文件链接到静态库本身