如何 return std::map 项目
How to return a std::map item
我在从位于 class 中的 std::map 退回物品时遇到问题。
我正在尝试创建一个像
这样的简单函数
ExplorerObjectMapItem* MyClass::getFirst()
{
mInternalMapIterator = mObserverLookup.begin();
ExplorerObjectMapItem* item = &*mInternalMapIterator;
return item;
}
使用以下类型定义的地方
typedef map< Subject*, shared_ptr<ExplorerObject> > ExplorerObjectMap;
typedef pair<Subject*, shared_ptr<ExplorerObject> > ExplorerObjectMapItem;
typedef ExplorerObjectMap::iterator ExplorerObjectIter;
映射和迭代器是 class 个成员:
ExplorerObjectMap mObserverLookup;
ExplorerObjectIter mInternalMapIterator;
上述 getFirst() 函数的代码给出了一个编译错误
E2034 Cannot convert 'pair<Subject * const,boost::shared_ptr<ExplorerObject>
> *' to 'ExplorerObjectMapItem *'
不确定这里发生了什么。任何帮助表示赞赏。
A std::map<K,V>
不包含 std::pair<K,V>
个对象。它包含 std::pair<const K, V>
个对象。缺少 const
是导致转换失败的原因。
您可以通过以下任一方式解决此问题
typedef pair<Subject* const, shared_ptr<ExplorerObject> > ExplorerObjectMapItem;
或
typedef ExplorerObjectMap::value_type ExplorerObjectMapItem;
我在从位于 class 中的 std::map 退回物品时遇到问题。 我正在尝试创建一个像
这样的简单函数ExplorerObjectMapItem* MyClass::getFirst()
{
mInternalMapIterator = mObserverLookup.begin();
ExplorerObjectMapItem* item = &*mInternalMapIterator;
return item;
}
使用以下类型定义的地方
typedef map< Subject*, shared_ptr<ExplorerObject> > ExplorerObjectMap;
typedef pair<Subject*, shared_ptr<ExplorerObject> > ExplorerObjectMapItem;
typedef ExplorerObjectMap::iterator ExplorerObjectIter;
映射和迭代器是 class 个成员:
ExplorerObjectMap mObserverLookup;
ExplorerObjectIter mInternalMapIterator;
上述 getFirst() 函数的代码给出了一个编译错误
E2034 Cannot convert 'pair<Subject * const,boost::shared_ptr<ExplorerObject>
> *' to 'ExplorerObjectMapItem *'
不确定这里发生了什么。任何帮助表示赞赏。
A std::map<K,V>
不包含 std::pair<K,V>
个对象。它包含 std::pair<const K, V>
个对象。缺少 const
是导致转换失败的原因。
您可以通过以下任一方式解决此问题
typedef pair<Subject* const, shared_ptr<ExplorerObject> > ExplorerObjectMapItem;
或
typedef ExplorerObjectMap::value_type ExplorerObjectMapItem;