He notado que algunas de mis funciones en una clase en realidad no están accediendo al objeto, así que las hice static
. Luego, el compilador me dijo que todas las variables a las que acceden también deben ser estáticas, bueno, bastante comprensibles hasta ahora. Tengo un montón de variables de cadena comoC++ inicializa variables estáticas en clase?
string RE_ANY = "([^\\n]*)";
string RE_ANY_RELUCTANT = "([^\\n]*?)";
y así sucesivamente en la clase. Los hice todos static const
porque nunca cambian. Sin embargo, mi programa solo se compila si los saco de la clase: de lo contrario, MSVC++ 2010 se queja de que "solo se pueden inicializar variables integrales constantes estáticas dentro de una clase".
Bueno, eso es desafortunado. ¿Hay alguna solución? Me gustaría dejarlos dentro de la clase a la que pertenecen.
ellos no tienen acceso a nada en el objeto, argumentos de referencia Por lo tanto, probablemente deberían ser tanto 'const' como' static'. –
@Felix: no es posible, 'const' significa que no modifica' this' ... y no hay 'this' para los métodos' static'. –
@Matthieu: Muy buena explicación. Entonces 'estático' es el correcto. –