我正在尝试从该静态对象中创建一个指向静态对象值的extern指针。我们将此对象称为Foo。
到目前为止,我使用它的唯一方法是创建一个Foo继承的Supervisor类,它包含两个静态类型变量。一个叫做superObject的是实际的初始化对象。另一个名为superPointer的是同一类型的双指针。在Foo对象内部,我声明了一个名为TheSupervisor的外部指针,并为其指定了一个nullptr。然后,在Supervisor基类中,我使用双指针superPointer将TheSupervisor extern指针的值更改为superObject的地址。 Wallah。
目标是创建一个对该对象的全局可访问引用。尽我所能避免单身,保持线程安全。我只是想知道是否有更好的方法?
我会发布代码,但我真的要清理它并改变它。我认为描述就足够了。实际上可能更简单。
编辑:事实证明,对于静态对象,我不能依赖它们构造的时间和顺序。使用单阶段过程不适用于此。相反,我必须继续依赖两阶段的过程,例如我上面概述的过程。印记 Ilya Kobelevskiy的答案是正确的,因为它演示了一种方法,但同样,当与静态对象一起使用时,它应该带有警告。
答案 0 :(得分:1)
也许我忽视了某些事情,但不会
class Foo
{
//some methods
public:
Foo* getSelf() const { return this;}
}
刚刚工作?
答案 1 :(得分:0)
我试图理解你在上面的评论中所说的内容,但我不确定这是否是你正在寻找的。 p>
class Foo
{
public:
Foo();
static Foo* shared_instance() {return &shared_instance_;};
private:
static Foo shared_instance_;
}
通过这种方式,您可以按原样使用共享实例,也可以在需要时实例化新实例。