Log日志类的静态成员需类外初始化
来源:互联网 发布:网络摄像机多少钱 编辑:程序博客网 时间:2024/06/06 19:57
在写一个日志类,单例模式(保证一个类只有一个实例存在)
单例模式有三个关键点:
1. 私有的静态实例对象 private static instance
(创建一个实例对象类内部使用)(PS:实例对象为什么要静态?类的静态成员变量是类共享的成员,且静态方法不能访问非静态成员变量)
2. 私有的构造函数 private Singleton()
(保证在该类外部,无法通过new的方式创建对象实例)
3. 公有的静态访问实例对象的方法 public static Singleton getInstance()
(对外部提供该对象的访问方法)
class Log {private:Log();Log(Log const&);Log& operator=(const Log &);static Log* m_instance;public:static Log * getInstance(){if (m_instance == NULL){m_instance = new Log();}return m_instance;}static void msglog(char const *buf); };声明私有的静态的实例对象,private static Log*m_instance;
编译出现错误:
error LNK2001: 无法解析的外部符号 "private: static class Log * Log::m_instance" (?m_instance@Log@@0PAV1@A)
查了下资料是静态成员变量m_instance没有定义。
在类中,只声明了静态成员变量,并没有定义。声明只是表明了变量的数据类型和属性,并不分配内存,定义则需要分配内存。静态成员变量没有定义,没有分配内存,就不能访问。
所以类的静态成员变量必须在类外进行初始化。
Log*Log::m_instance = NULL;
阅读全文
0 0
- Log日志类的静态成员需类外初始化
- 类的静态成员初始化
- 类的静态成员初始化。
- 静态初始化类成员
- C++类中静态成员的初始化
- 有关类的静态成员初始化
- C++类静态成员的初始化
- C++类静态成员的初始化
- C++类静态成员的初始化
- C++类静态成员的初始化
- C++类中静态成员的初始化
- C++类静态成员的初始化
- C++类静态成员的初始化
- c++类中静态成员的初始化
- C++类静态成员的初始化
- C++ 静态成员的类内初始化
- C++类的静态成员初始化
- 关于类的静态成员初始化
- table宽度失效-table布局的问题
- hdu 4825 Xor Sum(01字典树)
- SQL Server 对比两个数据库的索引
- Oracle迅速取到一个表的所有列的列名的方法
- 解析Android Studio 2.2 Native新特性
- Log日志类的静态成员需类外初始化
- java中的代理
- java反射
- Vim命令
- mt6735[AT Command] Modem 支持哪些AT Command?参数含义在哪查看?
- $.ajax()方法参数详解
- MySql之INSERT INTO…ON DUPLICATE KEY UPDATE详解
- string截取字符串
- PAT