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

标签 c++ oop pointers memory static

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

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

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

我会发布代码,但我真的必须清理它并对其进行更改。我认为描述已经足够了。实际上,也许更简单。

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

最佳答案

也许我忽略了一些东西,但不会

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

只是工作?

关于c++ - 如何从该对象中获取静态对象的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21123593/

相关文章:

c++ - 使用 C++ 中的流操纵器在固定宽度字段中居中文本

python - 如何在Python 3中重用父类(super class)方法的变量?

PHP 类继承 - 内存不足

pointers - Go 中可以使用哪些指针?

c - 双指针 C/C++

c++ - vector 中的成员类型是什么意思?

c++ - 从两个 cv::Mat 和一个掩码构造 cv::Mat

c++ - 如何正确使用 ifstream 从输入文件中读取数据?

php - 由数据库行组成的对象

c - 二进制 * 的无效操作数(有 ‘int’ 和 ‘int *’ )