#c #vector #iterator
#c #вектор #итератор
Вопрос:
небольшая помощь, ребята, я все еще новичок в c
error: invalid conversion from 'VboVO* const* const' to 'VboVO**'
я получаю эту ошибку при попытке компиляции. вот соответствующие части моего кода
struct VboVO{..};
vector<VboVO*> m_vboVos;
vector<VboVO*>::iterator iVbovo;
for(iVbovo = m_vboVos.begin() ; iVbovo != m_vboVos.end(); iVbovo){
}
Комментарии:
1. Это не может быть единственными релевантными частями вашего кода, потому что это отлично компилируется. Вы уверены, что сообщение об ошибке действительно соответствует приведенным вами здесь строкам?
2. компилятор gcc 4.2 на Mac.
3. @oli хороший вопрос. я проведу еще некоторое расследование
4. закомментировал цикл for, и он отлично компилируется, так что это должно быть проблемой. просто где-то читал, что, возможно, мне следует использовать постоянный итератор?
5. что еще более важно: является ли это ocde одной функции? Потому что, если бы я хотел угадать, я бы сказал, что m_vboVos является переменной-членом, а цикл for находится внутри постоянной функции-члена. Если vector::iterator является typedef для указателя, это может объяснить проблемы. Решениями было бы удаление модификатора const из функции или определение iVbovo как const_iterator (опять же, просто предположение, поскольку необходимо больше информации, чтобы сказать наверняка)
Ответ №1:
Это предположение
Вероятно, вы пытаетесь выполнить этот цикл в const
функции-члене некоторого класса, с m_vboVos
переменной-членом в качестве. Следовательно, m_vboVos
является const
, и вы не можете использовать iterator
с const vector
. Используйте const_iterator
вместо этого.
Комментарии:
1. да, я только что где-то это прочитал. я попробую это сделать. спасибо, приятель
2. вау, потрясающая догадка. вы попали в самую точку, в этом и заключалась проблема. вы были правы, я должен был также опубликовать постоянную функцию, в которой она была. спасибо, приятель