C ++ "Enumeración de punto flotante"
Estoy buscando una solución que use el estándar C ++ 03 (estoy limitado a usar esta versión del estándar por varios años). Las soluciones para C ++ 11 también son bienvenidas, pero no serán "aceptadas" como respuesta a esta pregunta.
¿Cuál es una forma simple y concisa en la que puedo representar un conjunto de valores de punto flotante constante relacionados como un solo tipo (similar a una enumeración) para garantizar la seguridad de tipos sin incurrir en gastos generales significativos y aún así permitirme operar los valores como flotadores directamente? ?
El resultado final es que me gustaría poder hacer algo como lo siguiente:
enum FloatingPointEnum
{
VALUE1 = 0.1234f,
...
VALUEN = 0.6789f
};
float SomeFunction(FloatingPointEnum value)
{
float new_value;
/* perform some operation using "value" to calculate "new_value" */
new_value = static_cast<float>(value); // <- a simplistic example
return new_value;
}
Si bien puedo pensar en varias soluciones, ninguna de ellas es tan limpia / simple / directa como me gustaría y creo que alguien ya debe tener una solución elegante para este problema (aunque no puedo encontrar una en mi búsqueda).
EDITAR:
Me gustaría que la siguiente llamada a SomeFunction con un valor que no se especifica directamente como un valor del tipo enumerado no se compile:
float nonEnumeratedValue = 5.0f
SomeFunction(nonEnumeratedValue);