2011-12-15 42 views

Respuesta

41

Debido static miembros de la clase no se almacenan en la instancia de clase, por eso una static funcionaría.

Almacenar un objeto dentro de otro objeto del mismo tipo podría romper el tiempo de ejecución - tamaño infinito, ¿verdad?

¿Qué devolvería sizeof? El tamaño del objeto necesita ser conocido por el compilador, pero dado que contiene un objeto del mismo tipo, no tiene sentido.

6

supongo que el error es algo así como

campo 'a' tiene tipo incompleto

Esto es porque cuando no es estático, la clase A no está completamente definido hasta que la llave de cierre . Las variables de miembro estático, por otro lado, necesitan un paso de definición por separado después de que la clase está completamente definida, por lo que funcionan.

Buscar la diferencia entre declaración y definición explicaciones más exhaustivas.

+0

¿El compilador no pudo "poner un recordatorio" para sí mismo para "agregar" eso más tarde? ¿Cuál es la limitación? –

+2

@AssafLevy ¿Cuál sería el tamaño del objeto? 'Base' contiene una' Base', que contiene una 'Base' ... –

+3

@JamesKanze: Una especie de dos espejos enfrentados .. Lo tengo, ¡gracias! –

Cuestiones relacionadas