我在从一个类中的std :: map返回一个项目时遇到了问题。 我正在尝试创建一个像
这样的简单函数ExplorerObjectMapItem* MyClass::getFirst()
{
mInternalMapIterator = mObserverLookup.begin();
ExplorerObjectMapItem* item = &*mInternalMapIterator;
return item;
}
使用以下typedef
typedef map< Subject*, shared_ptr<ExplorerObject> > ExplorerObjectMap;
typedef pair<Subject*, shared_ptr<ExplorerObject> > ExplorerObjectMapItem;
typedef ExplorerObjectMap::iterator ExplorerObjectIter;
并且map和iterator是类成员:
ExplorerObjectMap mObserverLookup;
ExplorerObjectIter mInternalMapIterator;
上面的getFirst()函数代码给出了一个编译错误
E2034 Cannot convert 'pair<Subject * const,boost::shared_ptr<ExplorerObject>
> *' to 'ExplorerObjectMapItem *'
不确定这里发生了什么。任何帮助表示赞赏。
答案 0 :(得分:2)
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;