He estado leyendo StackOverflow demasiado y comencé a dudar de todo el código que he escrito, sigo pensando "¿Es ese comportamiento indefinido?" incluso en código que ha estado funcionando durante años.Puntero de fundición para objetar a void * en C++
Así que mi pregunta - ¿Es seguro y bien definido comportar arrojar un puntero a un objeto (en este caso clases de interfaz abstractas) a un vacío * y luego volverlos a la clase original y llamar al método usándolos ?
Soy totalmente consciente de que el código que hace esto es probablemente horrible. Ni siquiera consideraría escribirlo así ahora (este es un código antiguo que realmente no quiero cambiar), así que no estoy buscando una discusión sobre mejores formas de hacerlo. Ya sé cómo escribirlo mejor si vuelvo a hacerlo. Pero si realmente está roto para confiar en esto en C++ entonces tendré que considerar cambiar el código, si es simplemente un código horrible, entonces cambiarlo no será una prioridad.
No tenía dudas sobre algo tan simple hace un año o dos, pero a medida que mi comprensión de C++ aumenta, me doy cuenta de que cada vez me preocupo más por la seguridad del código incluso si funciona perfectamente. Tal vez demasiada importancia desbordamiento de pila es algo malo para la productividad veces: P
Si bien este comportamiento no cambia en C++ 0x, no creo que sea una buena práctica citar un borrador de estándar no aceptado para responder preguntas sobre el estado actual del idioma. –
Gracias. Me siento bastante estúpido al hacer una pregunta tan básica después de 10 años de programación en C++, pero cuanto más aprendo sobre C++ más dudo de mí mismo a veces. Alguien mas se siente de esa manera? ... Hmm, solo yo entonces. – jcoder