Cita:
Iniciado por CalgaryCorpus El compilador tratará lo retornado como const, chequeando cada vez para que no pueda utilizarse en lugares donde una const no es aceptada.
Esto no impide modificar usando lo retornado por ese metodo. Esta dejando la puerta abierta para hacerlo. Por ejemplo:
Código C++:
Ver original#include <iostream>
using namespace std;
class M {
int x;
public:
M() : x(0) {}
const int& f() { return x; }
void printme() { cout << x << endl; }
};
int main()
{
M m;
m.printme();
// m.f() = 3; // ERROR de compilacion
*((int *)&m.f()) = 3;
m.printme();
return 0;
}
Hola gracias por la respuesta pero no he entendido muy bien esto:
*((int *)&m.f()) = 3;
Convierte la la referencia constante en un puntero no constante ?
Ya que esto int * convierte la direccion de la referencia constante devuelta por la funcion miembro y luego esto que hace *(lo demas) ??
Creo que me he liado un poco con esta linea.
Saludos