对于静态成员指针的出现的问题
2009-01-16 23:29
274 查看
今天复习设计模式的时候,自己动手写个个小的Singleton模式的简单实现,如下:
class Singleton
{
private:
static Singleton* mInstance;
Singleton();
public:
static Singleton* getInstance();
};
Singleton::Singleton() {}
Singleton* Singleton::getInstance()
{
if(NULL==mInstance)
{
mInstance = new Singleton;
}
return mInstance;
}
编译一下,发现编译可以通过。但是链接程序的时候曝出错误:无法解析的外部符号 mInstance
后来查了一下才发现,对于静态的成员指针必须先做初始化:
Singleton* Singleton::mInstance=NULL;
类似C#中的内联初始化。
而且静态成员指针的初始化不能写在构造函数的 初始化列表中。
真是动手编程序的时候能够发现知识的缺口啊。
class Singleton
{
private:
static Singleton* mInstance;
Singleton();
public:
static Singleton* getInstance();
};
Singleton::Singleton() {}
Singleton* Singleton::getInstance()
{
if(NULL==mInstance)
{
mInstance = new Singleton;
}
return mInstance;
}
编译一下,发现编译可以通过。但是链接程序的时候曝出错误:无法解析的外部符号 mInstance
后来查了一下才发现,对于静态的成员指针必须先做初始化:
Singleton* Singleton::mInstance=NULL;
类似C#中的内联初始化。
而且静态成员指针的初始化不能写在构造函数的 初始化列表中。
真是动手编程序的时候能够发现知识的缺口啊。
相关文章推荐
- c++ 中有静态指针成员的链表析构出现的问题
- 巧妙解决问题:&CMFCcodeDlg::RunCommands”创建指向成员的指针。MFC多线程调用要求调用的接口必须是全局函数或静态成员函数
- 关于类的静态成员函数指针的问题
- SimpleDateFormat做静态成员 成员 多线程并发出现问题
- 为什么C++类定义中,数据成员不能被指定为自身类型,但可以是指向自身类型的指针或引用?为什么在类体内可以定义将静态成员声明为其所属类的类型呢 ?
- 使用include标签出现的空指针问题
- list的addAll出现空指针问题
- 一个真正的Singleton[涉及DLL类静态成员问题]
- this指针访问成员函数问题
- linux环境下调试嵌入式设备时出现Aborted、segmentation fault、卡死的问题以及关于指针使用的一点想法
- android 中的inclue标签中出现的空指针问题
- jsp中include使用html静态文件出现乱码问题
- 指向成员函数指针,虚函数指针,静态成员函数指针
- linux下静态加载一个动态库出现的问题
- c++关于静态成员调用非静态成员的问题(c#参考,也可以使用)
- ssh框架整合的时候出现Unable to load configuration问题、getHibernateTemplate().save空指针
- 读几个小程序了解c++:Part 01(构造函数、析构函数、指针、静态数据成员)
- C++关于this指针、静态变量和静态成员函数 http://www.cnblogs.com/clrmas/archive/2010/03/23/1692893.htm
- 向AS中导入module,出现butterknife初始化控件空指针的问题解决办法
- 对于重装SQL 2000出现的某些挂起文件问题解决方法