Avatar ·

خطأ "Undefined reference to vtable" في C++: الأسباب والحل

```html Привет! Я пишу небольшой проект на C++ с использованием полиморфизма. У меня есть абстрактный базовый класс `Shape` и несколько производных классов: `Circle`, `Rectangle`. В базовом классе объявлена виртуальная функция `area()`. Когда я пытаюсь скомпилировать проект с помощью g++, компилятор выдает ошибку: ``` undefined reference to 'vtable for Shape' ``` Вот упрощенный код: shape.h: ```cpp #ifndef SHAPE_H #define SHAPE_H class Shape { public: virtual double area() = 0; // чисто виртуальная функция 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) {} // Забыл реализовать area()! ``` main.cpp: ```cpp #include "circle.h" int main() { Circle c(5.0); return 0; } ``` Я компилирую так: `g++ main.cpp circle.cpp -o prog`. Ошибка возникает при линковке. Ч ```