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