如果我的 SomeType 类有一个方法,该方法返回地图中的元素(使用键),例如:
那么这样做会确保调用者接收到的是指向映射中对象的指针而不是副本?这样做可以吗,还是会尝试调用复制构造函数(并因已被删除而失败),因为正在返回它?
假设我必须使用unique_ptr作为我的映射项。
更新:
在尝试实现代码之后,似乎unique_ptr和std:map /:pair在gcc 4.4.4中无法一起使用,pair不喜欢unique_ptr作为类型参数。(请参见Can't create map of MoveConstructibles)。
我将ptr更改为std :: shared_ptr,所有内容都正常工作。
我想我可以使用相同的代码来处理共享指针?
std::unique_ptr<OtherType> get_othertype(std::string name)
{
return otMap.find(name);
}
那么这样做会确保调用者接收到的是指向映射中对象的指针而不是副本?这样做可以吗,还是会尝试调用复制构造函数(并因已被删除而失败),因为正在返回它?
假设我必须使用unique_ptr作为我的映射项。
更新:
在尝试实现代码之后,似乎unique_ptr和std:map /:pair在gcc 4.4.4中无法一起使用,pair不喜欢unique_ptr作为类型参数。(请参见Can't create map of MoveConstructibles)。
我将ptr更改为std :: shared_ptr,所有内容都正常工作。
我想我可以使用相同的代码来处理共享指针?
OtherType
到底是什么?它是一个带有虚成员函数的基类吗?你需要子类型多态性吗? - fredoverflowunique_ptr
的一个典型示例。没有更多问题。 - fredoverflow