Di solito uso std :: unique_ptr per trasmettere la proprietà e passare i puntatori grezzi come parametri quando nessuna proprietà è implicita. Tuttavia, non considero quasi mai un nullptr accettabile come argomento, quindi sarebbe bello usare riferimenti per evitare questo, ma non sono sicuro che la maggior parte delle persone si aspetterebbe che l'oggetto che i riferimenti ai parametri debbano esistere per tutta la vita di la struttura A senza guardare il codice sorgente.
struct A {
A(B& b)
: bPtr(&b) {;}
void method() {
// use bPtr
}
B* bPtr;
};
Le domande sono:
1) L'unica opzione qui è di rimanere con i puntatori e controllare sempre nullptr?
3) Il fatto che A abbia bisogno che bPtr sia valido significa che dovrebbe prendere un shared_ptr? Se è così, mi sento come se usassi i puntatori condivisi praticamente ovunque.
2) Esistono convenzioni che possono aiutare a trasmettere requisiti di durata per i parametri agli utenti oltre a commenti e documentazione?