何を返すべきか、また返す必要があるかどうかを決定するのは完全にあなた次第です。たぶん、返す代わりに、中止 (「クラッシュ」) するか、例外をスローする必要がありますか? 他の回答がすでに示唆しているように、この場合、例外をスローすることがネストアプローチになる可能性があります。
ただし、誤った入力に応答して何かを返すことを本当に主張する場合、そのような場合の選択肢の 1 つは、そのようObject
な状況を処理するために特別に存在するタイプの定義済みの「ダミー」/「ガーディアン」オブジェクトです。
template <class Object>
class SparseMat
{
...
static Object error_object;
};
template <class Object>
const Object& SparseMat<Object>::get(int c, int r) //const
{
if((c >= 0)&&(c <= cCapacity)&&(r >= 0)&&(r <= rCapacity))
{
return mObjects[c][r];
}
return error_object;
}
error_object
設計によっては、呼び出し元のコードで簡単に認識できるようにしたい場合があります。または、返されたオブジェクトが「ダミー」であることを認識しなくても、呼び出し元のコードが適切に機能するように、その「ガーディアン」オブジェクトを設計できます。繰り返しますが、これはあなた次第です。