0
很抱歉的模糊問題的標題,但我在這裏有這些類型定義:的std ::列表迭代器沒有得到分配
class foo
{
Timeline timeline;
Keyframe left,right;
};
我:
typedef std::list<AnimationKeyframe> Timeline;
typedef Timeline::iterator Keyframe;
,並讓我們說這樣的類也有一個複製/分配的構造函數,因爲我存儲迭代器(似乎是一個壞主意), 和麻煩就在那裏。
Keyframe myTemp, hisTemp;
this->left = this->timeline.begin(); // assigns
myTemp = this->timeline.begin(); // assigns
hisTemp = that.timeline.begin() // does not assign
只要我試圖分配一個關鍵幀與「明」(其他富)之一,我得到的是看起來像一個模糊問題的錯誤。
二進制 '=':沒有操作員發現它 採用類型 '的std :: _ List_const_iterator < _Mylist>' 的右邊的操作數 (或沒有可接受的轉化率)
附加info:
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>>
]
是什麼導致了這種奇怪的行爲? 我懷疑我使用迭代器作爲狀態的壞風格......但我不知道除了保持指針之外我還能做些什麼。
感謝清除它了,現在非常有意義。 – Erius 2011-04-21 14:46:53