tinyXml2导致构建错误C2675 - xtree.cs

时间:2017-02-04 22:50:10

标签: c++ visual-studio-2010 tinyxml2

在构建使用tinyXml2的项目后,我收到以下三个错误。错误显示在附图中。有问题的代码可以在tinyXml2的xtree.cs文件中找到,在这里:

template<class _Iter>
    void insert(_Iter _First, _Iter _Last)
    {   // insert [_First, _Last) one at a time
    _DEBUG_RANGE(_First, _Last);
    for (; _First != _Last; ++_First)
        {   // insert element as lvalue
        const value_type& _Val = *_First;
        insert(end(), _Val);
        }
    }

tinyXml2_Errors

我正在使用(并且必须继续使用)VS2010

什么可能导致这些错误?

1)错误C2675:一元&#39; ++&#39;:&#39; std :: string&#39;没有定义此运算符或转换为预定义运算符可接受的类型

2)错误C2100:非法间接

3)错误C2440:&#39;初始化&#39;:无法转换为&#39; std :: string&#39; to&#39; const std :: pair&lt; _Ty1,_Ty2&gt; &安培;&#39;

编辑:包含错误

1 个答案:

答案 0 :(得分:0)

我评论了类(和标题)中的所有内容并添加了代码,直到收到错误。这个失败实际上不是由于tinyXml2 - 它是一个无法将字符串插入地图。

对于将来遇到此问题的任何其他人,这里是违规函数,它在Visual Studio中不会产生波浪形的红线。

    map<string, string> createMap(CNintendoItem ni)
    {
    map<string, string> xmlNodeToValue;

    //ItemName is a string constant. ni.Name is a string returned from a class
    xmlNodeToValue.insert(ItemName, ni.Name);//name of the item

    ...//several more insertions

    return xmlNodeToValue;
}

解决此问题的一种方法是使用以下方法为新密钥分配值:

xmlNodeToValue[ItemName] = ni.Name;//name of the item