我對C++超級新手。我需要編寫一個使用list
的鏈接列表類。我大部分的方式,但我需要一個[]
運算符返回列表中的第n個元素。我在大多數情況下都可以工作,但在我的測試驅動程序中,我需要比較不同列表中的兩個元素。 (即,例如,l1[n]==l2[m]
)。這提供了以下編譯錯誤:列表的迭代器是否可以返回一個非const引用?
error: passing ‘const StrList {aka const TList<std::basic_string<char> >}’ as ‘this’ argument of ‘T& TList<T>::operator[](int) [with T = std::basic_string<char>]’ discards qualifiers [-fpermissive]
我認爲這裏的問題是,從[]
操作迭代我回電話返回一個const引用。 (從[]
操作返回調用return(*iter);
,其中*iter
指的是正確的元素。
有沒有辦法返回參考迭代器作爲一個非const引用,或者是有一些其他的方式,我應該?要對這個我可以,如果有必要發佈更多的代碼
對不起@Yuushi,我不要以爲我明白,你能否詳細說一下? –
不管'TList'你試圖從一個非const元素引用被標記爲'const'。這種語言不會讓你從常量中獲得非常量的東西,而沒有明確的轉換,並且有很好的理由。如果我有一個常量,我希望它不會改變。 – chris
我沒有清楚地讀到錯誤。問題可能與您所描述的相反:您正在返回一個非const引用,但您需要一個const引用。 – Yuushi