所以我有以下方法:與嘗試捕捉和異常方法拋出
template <class DT> //needs testing
DT& LinkedSortedArrays<DT>::find (const DT& key)
{
list<SortedArray<DT>>::iterator it = SAList.begin();
for(; it != SAList.end(); ++it){
try{
if (it == SAList.begin() && key < (*it)[0]) throw Exception();
return (*it).find(const_cast<DT&> (key));
} catch (ArrayException e) {
}
}
throw Exception();
}
我以前定義的類Exception
和ArrayException
。 (*it).find(const_cast<DT&> (key))
每次在當前正在搜索的特定Array類中找不到key
會拋出ArrayException。 SAList
是一個STL List
。代碼編譯得很好。但是我沒有在我的程序中嘗試過。爲什麼?我需要有人來證實或糾正我以下假設我這樣做:
- 每當
if (it == SAList.begin() && key < (*it)[0]) throw Exception();
拋出一個異常,這意味着它將把它外面的for循環,甚至外面的方法,對嗎? - 我幾乎可以肯定,最後一行
throw Exception();
將在方法外拋出異常。 - for循環的排列方式,它不會跳過SAList的第一個元素,對吧?我的意思是,我已經在整個互聯網上看到了這個特定的代碼,它用來遍歷列表中的所有元素,就好像它是標準的或完美無缺的,但是......
++it
正在扭曲我的大腦。幫幫我? - 我被接收的
can't convert const int to int&
錯誤(由於(*it).find(const_cast<DT&> (key))
的find()
不是一個屬於LinkedSortedArrays
而是不同的一個,需要一個DT &變量和LinkedSortedArrays
的find()
具有DT &類型爲const的參數),我發現可能的解決方案可能會將其編寫爲const_cast<DT&> (key)
。我需要第二個意見。
最後,我明白這是不是一個具體的問題,因此我得到downvotes和/或問題被關閉。我根本不知道還有什麼要問的。 如果是我在錯誤的地方問的情況。我很抱歉。
爲什麼不'find'通過const引用取它的參數? –
Profesor希望如此:/ 它基本上是屬於另一個類的'find',它與'LinkedSortedArrays'一起構成數據結構。 – Yokhen