Quiero declarar constantes de cadena que se utilizarán en varias clases en el proyecto. Estoy considerando dos alternativasconstantes de cadena estática en clase vs espacio de nombres para constantes [C++]
Opción 1:
#header file
class constants{
static const string const1;
};
#cpp file
const string constants::const1="blah";
Opción 2:
#header file
namespace constants{
static const string const1="blah";
};
Sólo me preguntaba lo que sería una mejor aplicación.
Ya miraron
Where to store Class Specific named constants in C++
Where to put constant strings in C++: static class members or anonymous namespaces
UPDATE:
Opción 3:
Basado en las sugerencias de "potatoswatter" y "sellibitze" actualmente tengo la siguiente implementación?
#header file
namespace constants{
extern const string& const1(); //WORKS WITHOUT THE EXTERN ***WHY***
};
#cpp file
namespace constants{
const string& const1(){static string* str = new string ("blah"); return *str;}
}
Estoy incluyendo el archivo de encabezado donde necesito usar las constantes. ¿Hay algún inconveniente importante de esta implementación?
La opción 2 no parece ser una solución. Las cadenas aún se definirán por separado para cada archivo fuente, a pesar de aparecer en el mismo espacio de nombres. – Potatoswatter
La opción 2 es una solución si Shishya en realidad obtiene la sintaxis correcta. (No 'static', y la cadena solo se puede declarar en el encabezado, pero será necesario definirla en un archivo fuente). – pkh
@pkh: la sintaxis es un poco más complicada que eso; v) – Potatoswatter