La forma típica de definir una constante de utilizar dentro de una función entero es:¿Hay alguna razón para usar enum para definir una sola constante en el código C++?
const int NumbeOfElements = 10;
la misma para el uso dentro de una clase:
class Class {
...
static const int NumberOfElements = 10;
};
A continuación, se puede utilizar como una matriz de tamaño fijo atado, lo que significa que se conoce en tiempo de compilación.
compiladores Hace mucho tiempo no apoyaron esta última sintaxis y es por eso que se utilizan enumeraciones:
enum NumberOfElementsEnum { NumberOfElements = 10; }
Ahora, con casi todos los compilador utilizado el apoyo tanto de la en-función const int
y la de su clase static const int
sintaxis es ¿Hay alguna razón para usar la enumeración para este propósito?
Hmm, gcc no se queja de esto ni siquiera con -peedic -Wall -Wextra. Supongo que porque no puede detectar el error hasta el momento del enlace de todos modos, simplemente se da por vencido al tratar de diagnosticar el código no portátil de este tipo. –
Buena respuesta. Otra cosa agradable que no mencionas explícitamente es que una enumeración es un valor r, y por lo tanto, nunca se le asigna espacio de almacenamiento. Puede ser bueno saber eso * con seguridad *, en lugar de confiar en la optimización del compilador si está haciendo metaprogramación de plantillas y creando una gran cantidad de plantillas de clase. – jalf
Si no hay una definición para 'static const int' fuera de la clase, tampoco se asignará ningún almacenamiento para eso. Además, los valores de valores pueden tener espacio de almacenamiento asignado (por ejemplo, los temporales son valores r, y definitivamente usan almacenamiento). –