如何知道对象的所有者类
How to know the owner class of a object
有办法知道谁是对象的所有者吗??假设类A将类B的指针作为数据成员。有没有办法让B知道谁拥有他??
任何帮助对我来说都意义重大
"所有权"的概念不是C++语言中内置的。这是程序员用来理解自己代码的设计概念,而不是语言特性。通常它意味着一些负责释放资源的代码实体(例如动态分配的对象),但有时它意味着不同的东西。
因此,对象通常无法确定其"所有权",因为使用该对象的代码可以通过多种方式定义和管理所有权。
根据所有权在您的程序中的含义,boost::enable_shared_from_this
可能会对您有所帮助。它允许一个对象(或引用它的人)参与该对象的共享所有权,但它仍然不会告诉你想要与之共享的其他实体。因此,如果您实际上不需要了解A
的实例,只需要不发布B
的实例,这是非常有用的。A
和对B
实例的生命周期感兴趣的任何其他人都将持有他们使用shared_from_this
函数获得的shared_ptr
到B
。
如果您需要B
来访问A
的实例,那么您必须创建自己的机制。例如,您可以将指向A
实例的指针存储在B
实例中。
相关文章:
- 什么时候调用组成单元对象的析构函数
- 对RValue对象调用的LValue ref限定成员函数
- CMake-按正确顺序将项目与C运行时对象文件链接
- 空基优化子对象的地址
- 将对象数组的引用传递给函数
- 你能重载对象变量名本身返回的内容吗
- C++使用整数的压缩数组初始化对象
- 找不到成员对象:没有名为get_event()的成员,也处理多态性和向量
- 将对象移动到std::shared_ptr
- 堆分配的对象是否存在永不为空的唯一所有者?
- 如何在拥有的C++对象中安全地存储对所有者的引用?
- 如何为生存时间少于对象所有者的类组织对象所有权?
- 设计以访问对象所有者的元素
- 如何知道对象的所有者类
- 嵌套类对象的所有者
- 使用offsetof()从成员变量中获取所有者对象
- 获取预先创建的值的所有者对象?设计错误
- 在Google c++风格指南中引用的对象所有者是什么?
- 试图在Windows中更改互斥对象的所有者
- C++:对象通知其所有者销毁自身的通用方法