如何知道对象的所有者类

Chr*_*ris 2 c++

有没有办法知道谁是对象的所有者?让我们说类A将类B的指针保存为数据成员.B有什么方法可以知道谁拥有他?

任何帮助对我来说都意味着很多.

Ste*_*sop 5

"所有权"的概念并非内置于C++语言中.这是程序员用来理解他们自己的代码而不是语言特性的设计概念.通常它意味着某些代码实体负责释放资源(例如动态分配的对象),但有时它意味着不同的东西.

因此,对象通常无法确定其"所有权",因为使用该对象的代码可能有多种方式来定义和管理所有权.

根据程序中所有权的含义,boost::enable_shared_from_this可能会对您有所帮助.它允许一个对象(或引用它的人)参与该对象的共享所有权,但它仍然不会告诉您希望与其共享的其他实体.因此,如果您实际上不需要了解实例A,那么它只是需要B不被释放的实例.A和任何人的实例的生命周期的兴致B,都会举行一个shared_ptrB他们利用所获取的shared_from_this功能.

如果您需要B访问该实例,A则必须创建自己的机制.例如,您可以存储指向实例A中的实例的指针B.