Sto vedendo un sacco di persone che dicono che non dovresti mai usare puntatori grezzi. Che dire nel caso in cui si memorizza il puntatore raw in una classe, ma il modo in cui vengono popolati è ottenere il puntatore di un oggetto che non è stato creato in modo dinamico? Sono curioso di sapere se questa è una cattiva pratica e se sì come migliorarla. Questo mi sembra ideale dato che non sono obbligato a cancellare qualcosa di così limitato / nessuna possibilità di perdita di memoria? L'idea di "se non l'hai creata non la cancelli".
Posso controllare tutto in base alla portata della variabile che sto passando a destra? Se esce fuori dal campo di applicazione, ciò a cui punta non sarà più valido e genererà un'eccezione se provo ad accedervi e riuscirò a prenderlo e gestirlo. Curioso su pensieri / commenti / dubbi su questo.
class Object
{
private:
Object* object;
public:
void Object() { object = NULL; }
void AddObject(Object* obj)
{
object = obj;
}
Object* GetObject()
{
return object;
}
};
int main()
{
Object obj1;
Object obj2;
// obj2 wasn't dynamically created so no need to use a smart pointer
obj1.AddObject(&obj2);
return 0;
}