我有一个使用带有迭代器的STL Set的C ++程序。 set和iterator定义为:
set<TokenTableEntry*, Comparator> _XCLITokenTable;
set<TokenTableEntry*>::const_iterator it;
我有一个名为findToken的例程(如下所示),它有一个语句:
it = _XCLITokenTable.find(_TokenTableEntry);
产生错误消息:
&#34;隐式std :: _ Tree std :: less,std :: allocator,0&gt;&gt; :: const_iterator :: operator =(const std :: _ Tree,std :: allocator,0&gt;&gt; :: const_iterator&amp;)&#34;不是一个可行的候选人。
我不知道这条消息告诉我什么或如何纠正它。谁能提出建议?
感谢您的帮助。
约翰
int XCLITokenTable::findToken (string name, TokenTableEntry *_TokenTableEntry)
{
int type;
type = -1;
string lookupName(name);
std::transform(name.begin(), name.end(), name.begin(), ::tolower);
_TokenTableEntry->name = lookupName;
**it = _XCLITokenTable.find(_TokenTableEntry);**
if (it != _XCLITokenTable.end())
{
if ((*it)->name == name)
{
type = (*it)->type;
tokenCount++;
*_TokenTableEntry = *(*it);
return type;
}
}
return type;
}
答案 0 :(得分:1)
您应该将it
声明为
set<TokenTableEntry*, Comparator>::const_iterator it;
如果C ++ 11可用,您可以使用auto
:
auto it = _XCLITokenTable.find(_TokenTableEntry);
(最好声明int XCLITokenTable::findToken(...) const
,因此find
的返回类型为const_iterator
)