如何从该对象中获取静态对象的值?

时间:2014-01-14 20:42:24

标签: c++ oop pointers memory static

我正在尝试从该静态对象中创建一个指向静态对象值的extern指针。我们将此对象称为Foo。

到目前为止,我使用它的唯一方法是创建一个Foo继承的Supervisor类,它包含两个静态类型变量。一个叫做superObject的是实际的初始化对象。另一个名为superPointer的是同一类型的双指针。在Foo对象内部,我声明了一个名为TheSupervisor的外部指针,并为其指定了一个nullptr。然后,在Supervisor基类中,我使用双指针superPointer将TheSupervisor extern指针的值更改为superObject的地址。 Wallah。

目标是创建一个对该对象的全局可访问引用。尽我所能避免单身,保持线程安全。我只是想知道是否有更好的方法?

我会发布代码,但我真的要清理它并改变它。我认为描述就足够了。实际上可能更简单。

编辑:事实证明,对于静态对象,我不能依赖它们构造的时间和顺序。使用单阶段过程不适用于此。相反,我必须继续依赖两阶段的过程,例如我上面概述的过程。印记 Ilya Kobelevskiy的答案是正确的,因为它演示了一种方法,但同样,当与静态对象一起使用时,它应该带有警告。

2 个答案:

答案 0 :(得分:1)

也许我忽视了某些事情,但不会

class Foo
{
//some methods
public:
Foo* getSelf() const { return this;}
}

刚刚工作?

答案 1 :(得分:0)

我试图理解你在上面的评论中所说的内容,但我不确定这是否是你正在寻找的。

class Foo
{
    public:
        Foo();
        static Foo* shared_instance() {return &shared_instance_;};

    private:
        static Foo shared_instance_;
}

通过这种方式,您可以按原样使用共享实例,也可以在需要时实例化新实例。