2012-04-30 2 views
0

у меня есть это, что отлично компилируется в VC++ 6,0не может преобразовать параметру

typedef std::vector<ILBCOM_FieldStruct*> FieldsVector; 
FieldsVector m_coll; 
FieldsVector::iterator it(&m_coll[Index-1]); 
m_coll.erase(it); 

Мне нужно скомпилировать в Visual Studio C++ 2010

Сообщение об ошибке на 3-й линии:

ошибка C2664: 'std :: _ Vector_iterator < _Myvec> :: _ Vector_iterator (const std :: _ Vector_iterator < _Myvec> &)': невозможно преобразовать параметр 1 из 'ILBCOM_FieldStruct **' до 'сопзЬ станд :: _ Vector_iterator < _Myvec> &'

вы видите что-то не так?

+0

Try, взглянув на http://stackoverflow.com/questions/8848875/vc-vector-iterator-initialization – sonicwave

ответ

4

std::vector<T>::iterator не имеет конструктора, который преобразует из T*. Это делает есть конструктор копирования:

FieldsVector::iterator it(m_coll.begin()+Index-1); 
+0

Спасибо это работает. – michaelhsilva9944

+2

Чтобы быть ясным, в VC++ 6 'std :: vector :: iterator' был просто' T * '; с тех пор, это правильный класс итератора. – ildjarn

Смежные вопросы