C++ Static Member Variable Initialization 静态成员变量初始化
来源:互联网 发布:环北京贫困带 知乎 编辑:程序博客网 时间:2024/06/04 18:18
原来STL静态变量初始化这么麻烦的啊
原文:http://www.cnblogs.com/rogerroddick/archive/2013/03/15/2961812.html
静态变量需要在.cpp初始化,否则报错连接错误,
对于原始数据, int, double, …
simple.h
class Simple{public: Simple(void); ~Simple(void); static int GetInt(void);private: static int _i;};
simple.cpp
int Simple::GetInt(void){ return _i;}
连接出错:
error LNK2001: unresolved external symbol "private: static int Simple::_i" (?_i@Simple@@0HA)
error LNK2001: unresolved external symbol "private: static int Simple::_i" (?_i@Simple@@0HA)
需要在.cpp文件中初始化静态成员变量,初始化跟所在位置无关
int Simple::GetInt(void){ return _i;}int Simple::_i = 0;
对于数组静态变量,头文件可以如下声明
static int _i[10];
或者不指定对应数组长度
static int _i[].cpp文件可以如下初始化:
int Simple::_i[10] = {0};
对于STL容器静态变量,初始化方法比较复杂,需要借助一个静态构造函数,通过拷贝构造函数来实现初始化
simple.h定义为:
#include <map>using namespace std;typedef map<int, int> INT2INT;class Simple{public: Simple(void); ~Simple(void); static bool Find(int key);private: static INT2INT CreateMap(void); static INT2INT _i;};
simple.cpp定义为:
bool Simple::Find(int key){ INT2INT::iterator it = _i.find(key); if (it == _i.end()) return false; return true;}INT2INT Simple::CreateMap(void){ INT2INT _tmp; return _tmp;}INT2INT Simple::_i(Simple::CreateMap());
0 0
- C++ Static Member Variable Initialization 静态成员变量初始化
- 类成员变量初始化列表(Member Initialization List)
- 类成员变量初始化列表(Member Initialization List)
- C语言中的static变量和C++静态数据成员(static member)详解!
- C语言中的static变量和C++静态数据成员(static member)
- C语言中的static变量和C++静态数据成员(static member)
- #1 Variable Initialization(变量初始化)
- 利用“member initialization list”初始化类成员
- C++类模板中静态成员变量的隐式实例化问题(Implicit initialization of static member variables for template classes)
- java学习-变量初始化(member initialization)
- forbids in-class initialization of non-const static member不能在类内初始化非const static成员
- GotW #1 Variable Initialization(变量初始化)
- static静态成员变量
- static 静态成员变量
- 静态成员变量static
- C++初始化成员列表(member initialization list)
- 009.Member variable 实例变量(成员变量)
- 009.Member variable 实例变量(成员变量)
- SqlServer 如何按年月自动创建表分区?
- 编译适用于TP-Link WR703N的OpenWRT固件
- Xcode6 Symbol not found: _OBJC_CLASS_$_NSMutableURLRequest 报错处理
- php 学习阶段行 个人小结
- Android 调用相册 拍照 实现系统控件缩放 切割图片
- C++ Static Member Variable Initialization 静态成员变量初始化
- 南宁激光祛斑哪好 广西武警整形美容中心
- 怎么能兼S90细绳心,谟
- SQL语句获取所有数据库名、表名、字段名、表字段长度
- 浅谈ORDER排序对HIBERNATE分页查询的影响
- 返璞归真 asp.net mvc (4) - View/ViewEngine
- 敲代码累了来娱乐一下(笑话)
- 安卓百度定位SDK做终端定位获取经纬度--------------------安卓移动开发第三步
- java基础总结