2017-02-04 4 views
1

После создания проекта, использующего tinyXml2, я получаю следующие три ошибки. Ошибки показаны на прилагаемом изображении. Код обижая можно найти в файле xtree.cs tinyXml2, вот:tinyXml2 вызывает ошибку C2675 on build - 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: унарный «++»: «станд :: строка» не определяет этот оператор или преобразование к типу, приемлемый для предопределенного оператора

2) Ошибка C2100: незаконная косвенность

3) ошибка C2440: 'инициализации': не удается преобразовать из 'станд :: строка' к 'Const станд :: пары < _Ty1, _Ty2> &'

редактирование: включено ошибка позиционирования

ответ

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