通常、私はstd :: unique_ptrを使用して所有権を伝え、所有権が暗示されていない場合はパラメーターとして生のポインターを渡します。ただし、nullptrを引数として受け入れることはほとんどないので、これを回避するために参照を使用するのは良いことですが、ほとんどの人が、パラメーターが参照するオブジェクトがの存続期間中に存在する必要があると期待するかどうかはわかりません。ソースコードを見ずに構造体A。
struct A {
A(B& b)
: bPtr(&b) {;}
void method() {
// use bPtr
}
B* bPtr;
};
質問は次のとおりです。
1)ここでポインターを使い続け、常にnullptrをチェックする唯一のオプションはありますか?
3)Aが有効であるためにbPtrを必要とするという事実は、それがshared_ptrを取るべきであることを意味しますか?もしそうなら、私は事実上どこでも共有ポインタを使用するような気がします。
2)コメントやドキュメント以外に、パラメーターの有効期間の要件をユーザーに伝えるのに役立つ規則はありますか?
C++言語の観点からは、コードは問題ありません。
C++ユーザーとして、B
への参照/ポインターを維持するか、コピーを作成するか、コンストラクターパラメーターをでのみ使用するかは、struct A
のセマンティクスに大きく依存します。コンストラクター。
私の一般的な期待は(特に明記しない限りすべて):