Ho una funzione get()
che ottiene un oggetto human
da qualche parte. Questo è letteralmente l'unico uso di human
, per fornire una raccolta di proprietà di human
.
struct human {
std::string first_name;
std::string last_name;
unsigned int age;
std::string location;
};
Fare cose come
human user;
user.first_name = "Foo";
non ha senso, perché si suppone che human
venga usato per leggere le proprietà dell'oggetto che get()
restituisce, se questo ha senso.
human user = get();
std::cout << user.age << '\n';
Dovrebbe essere effettivamente una struttura di sola lettura. Penso che sia logico imporlo, come se modificassi accidentalmente i dati, forse sarai sorpreso di vedere che è cambiato o ha un valore strano.
Ho pensato di dichiarare le proprietà private
e di fornire funzioni getter come first_name()
e age()
. Anche la creazione di ogni variabile membro const
non è l'ideale, poiché ciò rimuoverebbe il costruttore implicito di copia.
Ma mi stavo chiedendo se c'è un modo migliore per raggiungere questo obiettivo, perché questi due metodi richiedono un sacco di codice standard.