繁体   English   中英

从指针返回引用

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM