Se refieren a cosas diferentes. En un contexto class
, static
significa que los métodos no requieren un objeto para actuar, por lo que se parecen más a funciones gratuitas. En un contexto namespace
, significa que las funciones tienen vinculación interna por lo que son exclusivos de la unidad de traducción que se definen en.
Además, los miembros de una class
son privados por defecto por lo que, como está escrito, sus funciones de clase solo se pueden llamar el uno del otro. Debería agregar un especificador de acceso public:
o hacer que el class
sea un struct
para cambiar esto.
Si necesita un conjunto de funciones gratuitas y no necesita objetos de clase, entonces probablemente sea más adecuado definirlas como funciones que no son static
en un espacio de nombres. Si se definen en línea en un archivo de encabezado, generalmente deben declararse inline
. Esto está implícito si están definidos en un class
.
Gracias, estaba escribiendo algunas rutinas de ayuda para obtener información del sistema de análisis/proc fs, estas rutinas de ayuda no requieren realmente una asociación con la clase, en mi requerimiento que tiene sentido utilizar espacio de nombres. Las cosas podrían haber cambiado si quisiera ocultar algunas de estas rutinas de ayuda, que otras rutinas de ayuda llaman pero no están expuestas, en ese escenario podría haber preferido un enfoque de clase. – harishvk27