C++ 将指向单例的指针指定给对象字段

C++ 将指向单例的指针指定给对象字段,c++,qt,singleton,C++,Qt,Singleton,我有一个单例(名为Context)当然有一个getInstance方法,它返回指向单个实例的静态指针 在其他类中使用此实例时,我一直在使用Context::getInstance()函数。但是由于我在同一个控制器类中调用了该方法数十次,所以我一直在寻找一个更简单的解决方案 我可以在Context*类型的控制器类中创建一个额外字段,并通过调用Context::getInstance()一次,在控制器的构造函数中为其分配单例吗?或者指针本身会在程序生命周期内发生变化吗?如果您使用的是单例,则在程序生

我有一个单例(名为Context)当然有一个getInstance方法,它返回指向单个实例的静态指针

在其他类中使用此实例时,我一直在使用Context::getInstance()函数。但是由于我在同一个控制器类中调用了该方法数十次,所以我一直在寻找一个更简单的解决方案


我可以在Context*类型的控制器类中创建一个额外字段,并通过调用Context::getInstance()一次,在控制器的构造函数中为其分配单例吗?或者指针本身会在程序生命周期内发生变化吗?

如果您使用的是单例,则在程序生命周期内它应该保持相同的对象,因此这应该是安全的。如果是您自己编写的类,那么您应该能够轻松地检查是否存在这种情况。

如果您不更改它,则不会发生这种情况

另一个解决办法可以是:

Context*Context()
{return Context::getInstance();}

可以,但是您的解决方案不安全-您可以在第一次调用
getInstance
方法之前错误地访问这个额外字段。您最好将
getInstance
返回的指针存储在“Controller”类的某个位置。

ZuulViewController::ZuulViewController(QObject*parent):QObject(parent),Context(Context::getInstance()){}这样应该安全吗?既然不调用getInstance就不可能创建上下文对象,那么如果getInstance()从不返回NULL,那么为什么不返回引用呢。