从指针返回引用

Returning a reference from a pointer

我在 singleton.h 中有这个 class:

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 时遇到编译器错误。

我想return一个SingletonSample&,但是我的_instance是一个指针SingletonSample*

我是 C++ 的初学者,但据我了解,对某物的引用只是指向某物的地址,而指向某物的指针只是指向该地址的指针。

我想return指针指向的地址,作为参考SingletonSample&

但是,我无法做到这一点。我该怎么做?

引用不是对象的地址。它只是一个别名。您只需取消引用指针:

return *_instance;

这让引用引用 _instance 指向的对象。

注意实现可以大大简化:

SingletonSample& SingletonSample::Instance() {
  static SingletonSample instance;
  return instance;
}

另请注意,单例是 generally considered a bad idea