C++ 如何从静态对象中获取该对象的值?
我正在尝试从静态对象中创建指向静态对象值的外部指针。我们称这个对象为Foo 到目前为止,我实现这一点的唯一方法是创建一个Supervisor类,Foo继承该类,该类包含两个静态类型变量。一个称为superObject的对象是实际初始化的对象。另一个称为superPointer,是同一类型的双指针。在Foo对象内部,我声明了一个名为supervisor的外部指针,并为其分配了一个null ptr。然后,在Supervisor基类中,我使用双指针superPointer将Supervisor外部指针的值更改为superObject的地址。瓦拉 这里的目标是创建对此对象的全局可访问引用。尽我最大的努力避免单身,并保持线程安全。我只是想知道有没有更好的办法 我会发布代码,但我真的必须清理它并改变它。我认为描述已经足够了。实际上,也许更简单 编辑:事实证明,对于静态对象,我不能依赖于它们的构造时间和顺序。使用单阶段流程对此不起作用。相反,我必须继续依赖一个两阶段的过程,就像我上面概述的那样。标记C++ 如何从静态对象中获取该对象的值?,c++,oop,pointers,memory,static,C++,Oop,Pointers,Memory,Static,我正在尝试从静态对象中创建指向静态对象值的外部指针。我们称这个对象为Foo 到目前为止,我实现这一点的唯一方法是创建一个Supervisor类,Foo继承该类,该类包含两个静态类型变量。一个称为superObject的对象是实际初始化的对象。另一个称为superPointer,是同一类型的双指针。在Foo对象内部,我声明了一个名为supervisor的外部指针,并为其分配了一个null ptr。然后,在Supervisor基类中,我使用双指针superPointer将Supervisor外部指针
Ilya Kobelevskiy的回答是正确的,因为它演示了一种方法,但同样,当与静态对象一起使用时,它应该附带一个警告。也许我忽略了一些东西,但不会
class Foo
{
//some methods
public:
Foo* getSelf() const { return this;}
}
只是工作?我正试图理解你在上面的评论中说的话,但我不确定这是否是你想要的
class Foo
{
public:
Foo();
static Foo* shared_instance() {return &shared_instance_;};
private:
static Foo shared_instance_;
}
这样,您既可以按原样使用共享实例,也可以在需要时实例化新实例。问得好。这个Foo类实际上是一个模板类。对于这种特殊类型的Foo,我使用模板专门化来初始化它,然后创建对它的全局访问,如上所述。我只想要一个。然而,对于其他类型,这些事情不会发生,我可以有不止一个。这回答了你的问题吗?标记作为答案,但请看我上面的编辑,关于它在静态对象中的使用。@Stradigos我认为你想得太多了。请注意,getSelf()方法是非静态的。因此,不需要对对象的创建顺序进行任何假设—方法只能在对象创建后从现有对象调用,并且它将返回指向该对象的指针—对象是否静态在本次竞赛中无关紧要。