Avatar ·

Erro "Undefined reference to vtable" em C++: causas e solução

Olá! Estou escrevendo um pequeno projeto em C++ usando polimorfismo. Tenho uma classe base abstrata `Shape` e algumas classes derivadas: `Circle`, `Rectangle`. Na classe base, declarei uma função virtual `area()`. Quando tento compilar o projeto com g++, o compilador retorna o erro: ``` undefined reference to 'vtable for Shape' ``` Aqui está o código simplificado: shape.h: ```cpp #ifndef SHAPE_H #define SHAPE_H class Shape { public: virtual double area() = 0; // função 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) {} // Esqueci de implementar area()! ``` main.cpp: ```cpp #include "circle.h" int main() { Circle c(5.0); return 0; } ``` Estou compilando assim: `g++ main.cpp cir