Siguiendo con los desafíos de programación: uno con C++.⭐️✨⚡️

Si bien podríamos modificar tanto la función como la invocación para evitar el error, en este caso tenemos 4 variantes de la función, pero solo una de ellas corrige el error. Cuál es

Aclaración: el programa que se muestra es solo para “jugar” a descifrar el error. No tiene ningún sentido ni “hace” nada en especial.

Click aquí para desplegar la solución. 👈
✅ La respuesta correcta es la B.

✏️ Explicación:

El código original ocasiona un error debido a que la función recibe el primer parámetro por referencia, pero en la invocación se está pasando como argumento la expresión a+b. Esta operación genera un valor temporal (con el resultado de a+b) que se descarta tan pronto la expresión es usada, por lo que no es posible crear una referencia a él.

❌ A. Además de que no soluciona el error antedicho, no corresponde poner una instrucción return debido a que la función es de tipo void.
✔️ B. Esta es la opción correcta. Aunque el argumento a+b sigue estando almacenado de manera temporal, const extiende su tiempo de vida, permitiendo leer ese valor (mas no modificarlo) dentro de la función.
❌ C. En esta opción se indica que todos los parámetros sean pasados por referencia, lo cual altera el resultado final sin corregir el error.
❌ D. Cambiar el tipo de la función y hacer que retorne un valor entero no soluciona el problema.


Solución al desafío



Desafío C++ 👇
Desafío C++ número 6