خطأ "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`. Ошибка возникает при линковке. Ч
```