Bastante nuevo programador aquí, y una disculpa anticipada para preguntas tontas.¿Una variable que es de solo lectura después de la asignación en tiempo de ejecución?
Tengo una variable int
en un programa que utilizo para determinar las longitudes de mis matrices en algunas de mis estructuras. Solía ponerlo en mi encabezado como const int
. Ahora, quiero bifurcar mi programa para dar a la variable diferentes valores dependiendo de los argumentos que figuran en, pero mantenerlo solo de lectura después de que lo asigne en tiempo de ejecución.
Algunas ideas que he tenido que hacer esto. ¿Hay una manera preferida?
- declarar una
const int *
en mi cabecera y asignarlo a unconst int
en mi función principal, pero que parece torpe. - Hazlo simple
int
en mi función principal. - Pase la variable como un argumento cuando se invoca la función.
- Algo más que no he pensado aún.
Si va a utilizar esta variable para crear matrices de tamaño variable en tiempo de ejecución, entonces esto no es estándar C++. El estándar C++ no permite ** matrices de longitud variable (VLA) **. Entonces la longitud de la matriz debe ser una constante de tiempo de compilación. –
@Als: estoy creando arreglos de longitud constante, pero no estoy seguro de cuál es la longitud hasta el tiempo de ejecución. –
@BlueMagister: Entonces no son de longitud constante. "constante" en este contexto significa "constante de tiempo de compilación". No puede dar una matriz (a menos que lo asigne con 'nuevo') un tamaño de tiempo de no compilación en C++.Tienes que usar un 'std :: vector' o asignarlo con' new'. –