Avatar ·

Error "Undefined reference to vtable" en C++: causas y solución

¡Hola! Estoy escribiendo un pequeño proyecto en C++ usando polimorfismo. Tengo una clase base abstracta `Shape` y varias clases derivadas: `Circle`, `Rectangle`. En la clase base se declara una función virtual `area()`. Cuando intento compilar el proyecto con g++, el compilador muestra el error: ``` undefined reference to 'vtable for Shape' ``` Aquí está el código simplificado: shape.h: ```cpp #ifndef SHAPE_H #define SHAPE_H class Shape { public: virtual double area() = 0; // función virtual pura virtual ~Shape() {} }; #endif ``` circle.h: ```cpp #include "shape.h" class Circle : public Shape { public: Circle(double r); double area() override; private: double radius; }; ``` circle.cpp: ```cpp #include "circle.h" Circle::Circle(double r) : radius(r) {} // ¡Olvidé implementar area()! ``` main.cpp: ```cpp #include "circle.h" int main() { Circle c(5.0); return 0; } ``` Compilo así: `g++ main.cpp cir