Mat*_*ero -1 c++ singleton pointers reference c++11
我有这节课singleton.h:
class SingletonSample {
public:
static SingletonSample& Instance();
int DoSomething() const;
private:
SingletonSample();
~SingletonSample();
SingletonSample(const SingletonSample&) = delete;
SingletonSample& operator=(const SingletonSample&) = delete;
static SingletonSample* _instance;
}
Run Code Online (Sandbox Code Playgroud)
我有这个实现singleton.cpp:
SingletonSample::SingletonSample() {}
SingletonSample::~SingletonSample() {}
SingletonSample& SingletonSample::Instance() {
if(!_instance) _instance = new SingletonSample();
return _instance;
}
int SingletonSample::DoSomething() const {
return 20;
}
Run Code Online (Sandbox Code Playgroud)
尝试时出现编译错误return _instance.
我想要返回一个SingletonSample&,但我_instance是一个指针SingletonSample*.
我是C++的初学者,但据我所知,对某事的引用只是该事物的地址,而指向某事物的指针只是指向该地址的指针.
我想返回指针指向的地址作为参考SingletonSample&.
但是,我无法实现这一目标.我怎样才能做到这一点?
引用不是对象的地址.它只是一个别名.你只需要取消引用指针:
return *_instance;
Run Code Online (Sandbox Code Playgroud)
这使引用引用指向的对象_instance.
请注意,实现可以大大简化:
SingletonSample& SingletonSample::Instance() {
static SingletonSample instance;
return instance;
}
Run Code Online (Sandbox Code Playgroud)
另请注意,单身人士通常被认为是个坏主意.
| 归档时间: |
|
| 查看次数: |
92 次 |
| 最近记录: |