我有一个单例类。多文件访问单例类
在A.H
class single
{
public:
static single *Instance;
static single* getInstance()
{ if(!Instance) Instance = new single;
return Instance;
}
void hello() { cout<<"Hello"; }
private: single(){ }
}
在A.cpp
single *single::Instance = 0;
std::auto_ptr <single> SINGLE_OBJ (single::getInstance());
在B.cpp
#include "A.h"
SINGLE_OBJ->hello();
我得到以下错误: SINGLE_OBJ没有在这个范围内声明。
你为什么不使用单一::的getInstance() - >你好();在B.cpp中? – Rabbid76
为什么通过'auto_ptr'在外部管理实例的内存?它使用'new'分配的事实是一个实现细节。它应该保持在'single'的内部用于封装,并且确保即使用户不将指针放在auto_ptr中也可以清除内存。顺便说一下,C++ 11用'std :: unique_ptr'替换了不推荐使用的'std :: auto_ptr'类模板。 – TheOperator