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?