Símbolos no definidos: "vtable" y "typeinfo"
En el código proporcionado, surge un error de vinculación con los siguientes mensajes:
Undefined symbols: "vtable for Obstacle", referenced from: Obstacle::Obstacle()in Myworld.o "typeinfo for Obstacle", referenced from: typeinfo for RECTANGLEin RECTANGLE.o typeinfo for CIRCLEin CIRCLE.o
Comprensión de "vtable" y "typeinfo"
Resolviendo el error
La causa principal de este error es muy probable que la clase base abstracta Obstacle no contenga -funciones virtuales puras. Cuando una clase declara una función virtual pura (método virtual void() = 0;), significa que las clases derivadas deben anular la implementación.
Si ha definido funciones virtuales no puras en Obstacle, el compilador espera encontrar sus implementaciones en la clase base o en las clases derivadas. Sin embargo, si no se proporcionan estas implementaciones, el compilador genera estructuras internas (vtable y typeinfo) que dependen de esas funciones. Al vincular, las funciones que faltan provocan errores de símbolo indefinido.
Solución
Para resolver este problema, asegúrese de que todos los métodos virtuales en la clase base abstracta Obstacle estén declarados como funciones virtuales puras. Esto obliga a las clases derivadas a anular e implementar estos métodos. Al hacerlo, se proporcionarán las implementaciones correctas del método virtual y el proceso de vinculación debería tener éxito sin errores de símbolos indefinidos.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3