我有两节课。创建资源的资源,然后发送到另一个类,该类存储它以供程序的不同部分访问。我所做的是:
typedef std::shared_ptr<Object> ObjectPtr;
ObjectPtr CreatorClass::Create()
{
ObjectPtr(new Object);
// ...
return ObjectPtr;
}
void StorageClass::Store(ObjectPtr obj)
{
myVector.push_back(obj);
}
ObjectPtr StorageClass::Get(int index)
{
return myVector[index];
}
我的问题是:
shared_ptr
是否正确,还是应该使用别的东西?ObjectPtr
向商店功能和Get功能传递吗?答案 0 :(得分:0)
我使用shared_ptr是否正确,还是应该使用别的东西?
如果您需要共享所有权,那么您是正确的。否则你错了。
我是否应该通过值将ObjectPtr传递给Store函数
是。虽然你可以仍然.push_back(std::move(obj))
以避免不必要的副本。
来自Get功能?
取决于您是否想要
shared_ptr
,然后通过非const引用返回答案 1 :(得分:0)
嗯,一般来说,你的效率并不高。我看到代码存在多个问题,几乎接近反模式。