I have a class :
class A
{
private:
vector<int> x;
public:
const vector<int>& immutable_data() {
return x;
}
vector<int>* mutable_data() {
return &x;
}
}
コードでこのクラスを使用する場合、mutable_data() によって返されるポインターが null かどうかを確認する必要がありますか (このクラスの構造を知っている場合)。個人的には、const 参照を返すセカンダリ API が存在することを知っているので、そうする必要はないと思います。したがって、ポインターが null になることはありません (この関数が null を返すシナリオは想像できません。どういうわけか null を返します。その場合の const ref バージョンの動作はどうなるでしょうか)。または、スタック上の既存のオブジェクトのアドレスを知っているので、null にすることはできませんか? これは、これについて考えたり推論したりする正しい方法ですか? 誰かが他の方法を考えている場合は、サンプルコードを教えてください。
プロダクション コードでのより一般的なケースのシナリオ: プロトコル バッファを使用する場合、メッセージ テンプレート用に生成されたコードを既に知っています (たとえば、stl コンテナーのような反復フィールド)。ただし、毎回 null チェックを行う必要がありますかそれらは常にポインターまたは const 参照のいずれかによって返されるため、変更可能な API を使用したいと考えています。
参照によって返すことは、私が探しているものではありません。