C++:错误:ISO C++ forbids in-class initialization of non-const static member ‘A::b’
错误
不允许类内初始化,非常量静态成员;
class.cpp:7:13: error: ISO C++ forbids in-class initialization of non-const static member ‘A::b’static int b=0;
代码
class A
{virtual void fun1(){};int a;
public:static int b=0;
为什么要加这么个限制
如果包含这个类的头文件,被多个cpp文件引用,可能造成困扰。
https://stackoverflow.com/questions/9656941/why-cant-i-initialize-non-const-static-member-or-static-array-in-class?noredirect=1&lq=1
https://www.stroustrup.com/bs_faq2.html#in-class
The Design and Evolution of C++
So why do these inconvenient restrictions exist? A class is typically declared in a header file and a header file is typically included into many translation units. However, to avoid complicated linker rules, C++ requires that every object has a unique definition. That rule would be broken if C++ allowed in-class definition of entities that needed to be stored in memory as objects. See D&E for an explanation of C++'s design tradeoffs.
但是为了适应需求:在c++17里,有了 这种语法:static inline int maxNumberOfNeighbors = 4;
如果使用c++11 编译,出现warning:
class.cpp:7:20: warning: inline variables are only available with -std=c++17 or -std=gnu++17static inline int b=0;
使用c++17, 编译正常。
C++:错误:ISO C++ forbids in-class initialization of non-const static member ‘A::b’相关推荐
- C++: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings]
不允许将字符串常量,给char指针. warning.c: In function 'int main()': warning.c:9:19: warning: ISO C++ forbids con ...
- linux c++ 警告 warning: ISO C++ forbids converting a string constant to ‘char*‘ [-Wwrite-strings] 解决方法
在C++中, char* p = "abc"; // valid in C, invalid in C++ 会跳出警告:warning: ISO C++ forbids conve ...
- linux c 内核 ISO C90 forbids mixed declarations and code 警告
编译的时候经常会遇到 ISO C90 forbids mixed declarations and code 警告 百度了一下,知道是如下原因 : 变量定义之前任何一条非变量定义的语 ...
- arm linux c++编译警告:ISO C++ forbids converting a string constant to ‘char*’(需要把const char*转换成char*)
编译时遇到警告: /home/yg/rv/sdk/rv1.8/rv1126_rv1109/buildroot/output/rockchip_rv1126_rv1109/build/ky_ai_cam ...
- warning: ISO C++ forbids converting a string constant to ‘char*‘ [-Wwrite-strings]
warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings] 在C++11中有明确规定 char ...
- warning: ISO C forbids an empty translation unit [-pedantic]
root@Ubuntu32:/home/zhangbin/codeStore/testCODE/testMeServerRTSP/mework/meserver/meserver# make gcc ...
- warning ISO C90 forbids mixed declarations and code
warning:ISO C90 forbids mixed declarations and code 变量定义之前任何一条非变量定义的语句(重视:语句是会带分号的)都会引起这个警告! 将非变量的定义 ...
- warning:ISO C90 forbids mixed declarations and code
warning:ISO C90 forbids mixed declarations and code 变量定义之前任何一条非变量定义的语句(重视:语句是会带分号的)都会引起这个警告! 将非变量的定义 ...
- warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement]
warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement] 这个警告出现在我编译驱动程序中 ...
最新文章
- 【面试题】如何设计一个高并发的系统?
- BZOJ 1260:[CQOI2007]涂色paint
- Mercury:唯品会全链路应用监控系统解决方案详解
- HighNewTech:带你解读云计算、雾计算(Fog Computing)、边缘计算(Edge Computing)的前世今生
- linux编译cmake
- mysql命令行cmd_CMD命令行操作MySQL
- java循环输出_Java实现excel导出(内容循环多个)
- Activiti工作流(三)——流程变量
- 网站禁止复制类型的属性
- 数据结构 统计二叉树中度为0,1和2的结点个数
- java替换的程序_Java文本文件批量替换小程序的方法
- python 安居客 爬虫_python 自动抓取分析房价数据——安居客版
- HDMI 2.0高速电平转换芯片——LK361S20
- 金蝶K3服务器安装与配置方法详细图解
- 怎么读取cf卡id_CF卡传输程序的步骤解析
- 轻体重者入门跑鞋选购全攻略(包括跑姿分析及跑鞋推荐)
- 数据结构(二): 链表篇
- 【android】几种模拟按键、屏幕点击的方法
- 全面解析终极移动终端“MID”(三):MID集成热点应用
- 全球最大电音音乐节Tomorrowland | FTX Europe将与电子音乐节Tomorrowland合作