C++ 在C+中有好的方法吗+;11是否将对其他对象的引用存储为成员?

C++ 在C+中有好的方法吗+;11是否将对其他对象的引用存储为成员?,c++,oop,c++11,design-patterns,ownership,C++,Oop,C++11,Design Patterns,Ownership,大家好 这就是我坚持的地方: 我有三个具体的课程:计算机,外围设备和个人。 计算机和外围设备都是扩展类设备 Device有一个私有成员Device.owner:Person,它应该存储对设备所有者的某种引用,以及一个公共函数Device.getOwner():Person 另一方面,任何Person都有自己的私有成员Person.peripherals和Person.computers和公共函数Person.get()。。。等等 是否有任何设计模式可以在类之间建立这些连接? 不转让直接所有权!(

大家好

这就是我坚持的地方: 我有三个具体的课程:
计算机
外围设备
个人
计算机
外围设备
都是扩展类
设备

Device
有一个私有成员
Device.owner
Person
,它应该存储对设备所有者的某种引用,以及一个公共函数
Device.getOwner()
Person

另一方面,任何
Person
都有自己的私有成员
Person.peripherals
Person.computers
和公共函数
Person.get()
。。。等等

是否有任何设计模式可以在类之间建立这些连接?

不转让直接所有权!(计算机无权杀死
个人
等的实例。这就是为什么我要小心使用指针)

但是如果
计算机的某些实例将更改其所有者,则它必须从以前所有者的计算机列表中消失,并出现在新所有者的列表中。与
外围设备
相同


如果你有问题,请提问。也许,我对这种情况的解释很差。很抱歉出现lang错误。

您可以使用std::unique\u ptr来确保存在对该对象的单个引用。要更改所有权,请使用std::move

std::unique_ptr<Device> devicePtr(new Device());
std::unique_ptr<Device> devicePtr2(std::move(devicePtr));
std::unique_ptr devicePtr(新设备());
std::unique_ptr devicePtr2(std::move(devicePtr));

每个人都会有它独特的指针。

也许你应该考虑使用<代码>弱小的PTR < /代码> s?