STL SET 迭代器赋值 没有可行的候选者

STL SET Iterator assignment no viable candidate

本文关键字:候选者 SET 迭代器 赋值 STL      更新时间:2023-10-16

我有一个使用带有迭代器的STL集的C++程序。集合和迭代器定义为:

 set<TokenTableEntry*, Comparator> _XCLITokenTable;
 set<TokenTableEntry*>::const_iterator it;

我有一个名为findToken的例程(如下所示),它有一个语句:

 it = _XCLITokenTable.find(_TokenTableEntry);

这会产生错误消息:

"隐含标准::_Tree std::less,std::allocator,0>>::const_iterator::operator=(const std::_Tree,std:::allocator,0>>::const_iterator &)" 不是一个可行的候选者。

我不知道这条消息告诉我什么或如何纠正它。任何人都可以提出建议吗?

感谢您的任何帮助。

John

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;
}

你应该将it声明为

set<TokenTableEntry*, Comparator>::const_iterator it;

或者,如果 C++11 可用,您可以使用auto

auto it = _XCLITokenTable.find(_TokenTableEntry);

(并最好声明int XCLITokenTable::findToken(...) const,因此find的返回类型将是const_iterator