Извините за неопределенный заголовок вопроса, но у меня есть эти typedefs здесь:
typedef std::list<AnimationKeyframe> Timeline;
typedef Timeline::iterator Keyframe;
и, скажем, такой класс:
class foo
{
Timeline timeline;
Keyframe left,right;
};
У меня также есть копия / назначениеконструктор, потому что я храню итераторы (кажется, это плохая идея), и проблема заключается именно в этом.
Keyframe myTemp, hisTemp;
this->left = this->timeline.begin(); // assigns
myTemp = this->timeline.begin(); // assigns
hisTemp = that.timeline.begin() // does not assign
, как только я пытаюсь назначить ключевой кадр с одним из 'that' (другимfoo) Я получаю ошибки, которые выглядят как проблема неоднозначности.
binary '=': не найден оператор, который принимает правый операнд типа 'std :: _ List_const_iterator <_Mylist>' (или тамнедопустимое преобразование)
Дополнительная информация:
with
[
_Mylist=std::_List_val<AnimationKeyframe,std::allocator<AnimationKeyframe>>
]
could be 'std::_List_iterator<_Mylist> &std::_List_iterator<_Mylist>::operator =(const std::_List_iterator<_Mylist> &)'
with
[
_Mylist=std::_List_val<AnimationKeyframe,std::allocator<AnimationKeyframe>>
]
while trying to match the argument list '(Keyframe, std::_List_const_iterator<_Mylist>)'
with
[
_Mylist=std::_List_val<AnimationKeyframe,std::allocator<AnimationKeyframe>>
]
Что вызывает такое странное поведение?Я подозреваю, что мой плохой стиль использования итераторов в качестве состояний ... но я не знаю, как еще я мог бы это сделать, кроме хранения указателей.