Devo definire alcune stringhe costanti che verranno utilizzate solo da una classe. Mi sembra di avere tre opzioni:Dove inserisco stringhe costanti in C++: membri di classi statiche o namespace anonimi?
Incorporare le stringhe direttamente nei luoghi in cui vengono utilizzate.
li definiscono come membri privati statica costante della classe:
//A.h class A { private: static const std::string f1; static const std::string f2; static const std::string f3; }; //A.cpp const std::string f1 = "filename1"; const std::string f2 = "filename2"; const std::string f3 = "filename3"; //strings are used in this file
definirli in uno spazio dei nomi anonimo nel file cpp:
//A.cpp namespace { const std::string f1 = "filename1"; const std::string f2 = "filename2"; const std::string f3 = "filename3"; } //strings are used in this file
Alla luce di queste opzioni, che uno consiglieresti e perché? Grazie.
Grazie per la formattazione. – stone
Si noti che questo è pericoloso se si chiama la funzione che utilizza queste stringhe da altre unità di traduzione prima dell'avvio principale: la funzione potrebbe quindi accedere agli oggetti stringa prima che siano stati creati. Per questo motivo, mi sbarazzerei degli oggetti const std :: string, e uso 'char const f1 [] =" nomefile ";' per questo. –
@litb: Sembra che tu stia dicendo che è più sicuro utilizzare il tipo di carattere primitivo rispetto all'oggetto stringa in questo caso? Posso sapere la ragione di questo? – jasonline