2009/6/29 Carlos Pantelides <[email protected]>:
> Supongamos ahora que quiero que una instancia en particular sea read-only:
>
> int main(int argc, char * arg[]) {
>        const ConstantClass ccc();
> }
>

Probé el código que pasaste y el compilador chilla con el error:

const.cpp:18: error: request for member `getValue' in `ccc', which is
of non-class type `const ConstantClass ()()'

y es porque ccc es una función. La forma correcta de definirla es sin
el par de paréntesis:

|    int main(int argc, char * arg[]) {
|        const ConstantClass ccc;
|    }

... de todas formas en ese caso se procuce el error:

const.cpp:17: error: uninitialized const `ccc'

Por lo que aparentemente el compilador tiene los medios para
determinar si el objeto esta inicializado o no.

> Parece haber una regla ahi, no? Alguien la conoce?

No la conozco, pero creo que esto es así ya que al ser const ninguna
asignación es válida; entonces solo puede ser inicializado en el
constructor y nunca será posible cambiar su valor. Luego, que el
objeto quede sin inicializar puede provocar el mal funcionamiento de
la aplicación.

_______________________________________________
Lista de correo Programacion.
[email protected]
http://listas.fi.uba.ar/mailman/listinfo/programacion

Responder a