![](/img/trans.png)
[英]Returning a reference to a pointer from a function same as returning a pointer?
[英]Returning a reference from a pointer
我在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;
}
我在singleton.cpp
有此实现:
SingletonSample::SingletonSample() {}
SingletonSample::~SingletonSample() {}
SingletonSample& SingletonSample::Instance() {
if(!_instance) _instance = new SingletonSample();
return _instance;
}
int SingletonSample::DoSomething() const {
return 20;
}
尝试return _instance
时出现编译器错误。
我想返回一个SingletonSample&
,但是我的_instance
是一个指针SingletonSample*
。
我是C ++的初学者,但据我了解,对某事物的引用只是该事物的地址,而对某事物的指针只是对该地址的指针。
我想返回指针所指向的地址,作为参考SingletonSample&
。
但是,我无法实现这一目标。 我怎样才能做到这一点?
引用不是对象的地址。 它只是一个别名 。 您只需要取消引用指针:
return *_instance;
这使引用可以引用_instance
指向的对象。
请注意,实现可以大大简化:
SingletonSample& SingletonSample::Instance() {
static SingletonSample instance;
return instance;
}
另请注意,单例通常被认为是一个坏主意 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.