Ver Mensaje Individual
  #3 (permalink)  
Antiguo 10/08/2015, 00:22
braedu555
 
Fecha de Ingreso: febrero-2015
Mensajes: 20
Antigüedad: 9 años, 11 meses
Puntos: 0
Respuesta: problemas con el calificador de tipo "Const"

Cita:
Iniciado por dehm Ver Mensaje
Bueno, ante todo una cosa.
Hay que diferenciar entre errores y avisos(warnings).
Lo que te manda el compilador son avisos que si bien te dejan ejecutar el programa te están advirtiendo de fallos que te pueden ocasionar problemas más adelante.

Respecto a la primera duda, efectivamente, el tipo del parámetro es const int y tú le estás enviando un int.
El compilador te lo acepta EN ESTE CASO, porque efectivamente tu función no está modificando el contenido del array. Así que le hace un casting a const int y ejecuta la función.

Sin embargo prueba a meter dentro de la función una sentencia que sí modifique el array, algo tipo:
Código C++:
Ver original
  1. a[1][1]=3;

El warning se convierte en error y directamente no te dejará compilar, ya que const está protegiendo al array de modificaciones dentro de la función.

Y sobre el segundo warning igual....sólo que en este caso te debería dar error directamente, ya que la función ordenaBurbuja(int [][]) espera encontrarse con un int y tu le envías un const int
Gracias ya entiendo un poco mejor, aunque con los arreglos de un subindice no me da estos avisos y pues creí que el arreglo bidimensional tenia algo que ver...

En fin, solo tengo otra duda general solo para que me quede un poco mas claro...
¿Se puede decir que esta bien pasar un arreglo de tipo int a una función que la convierte en const int siempre y cuando la función no trate de modificar el array, pero esta mal pasar un arreglo const int a una funcion que recibe como parámetro al arreglo de tipo int?
Es decir ¿Se puede hacer un casting de int a const int pero es incorrecto hacerlo viceversa? eso es lo que entendi