Acabo de encontrar el siguiente error (y encontré la solución en línea, pero no está presente en Stack Overflow):
(.gnu.linkonce. [stuff]): referencia indefinida a [método] [archivo de objeto] :(. gnu.linkonce. [stuff]): referencia indefinida a `typeinfo para [classname] '
¿Por qué podría uno obtener uno de estos errores de vinculador "referencia indefinida a typeinfo"?
(Puntos de bonificación si puede explicar lo que sucede detrás de escena).
virtual void abc() =0;
(si la versión base nunca se llama)
abc()
así, puede olvidarse fácilmente de redefinir abc()
en la clase derivada y pensar que todo está bien, ya que aún puede llamar a la función sin ningún problema. En este artículo se encuentra una buena práctica para implementar funciones virtuales puras , y esto es hacer que la función imprima "Función virtual pura llamada" y luego bloquee el programa.
= 0;
.