1
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 を使用したいと考えています。

参照によって返すことは、私が探しているものではありません。

4

2 に答える 2