だから私は次の方法があります:
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。現時点で検索されている特定の Array クラスで見つからない(*it).find(const_cast<DT&> (key))たびに ArrayException をスローします。です。コードは問題なくコンパイルされます。しかし、私は自分のプログラムでそれを試していません。なんで?私が行った次の仮定について、誰かが私を確認または修正する必要があります。keySAListSTL List
- が例外をスローするときはいつでも
if (it == SAList.begin() && key < (*it)[0]) throw Exception();、for ループの外、さらにはメソッドの外でも例外をスローするということですよね? throw Exception();最後の行がメソッドの外側で例外をスローすることはほぼ確実です。- for ループの配置では、SAList の最初の要素をスキップしませんよね。つまり、リストのすべての要素を標準または完璧であるかのように反復処理するこの特定のコードをインターネット全体で見たことがありますが、それ
++itは私の頭をねじっています。ヘルプ? - のエラーを受け取っていました
can't convert const int to int&(find()in(*it).find(const_cast<DT&> (key))はに属するものではLinkedSortedArraysなく、DT& 変数を必要とし、 const DT& 型LinkedSortedArraysのfind()パラメーターを持っている別のものであるため)、可能な解決策はそれをconst_cast<DT&> (key). これについてセカンドオピニオンが必要です。
最後に、これが特定の質問ではないため、反対票を投じたり、質問がクローズされたりするかどうかを理解しています。他にどこに聞いたらいいのかわからないだけです。間違った場所で質問している場合。謝罪いたします。