Fehler "Undefined reference to vtable" in C++: Ursachen und Lösung
Hallo! Ich schreibe ein kleines Projekt in C++ mit Polymorphismus. Ich habe eine abstrakte Basisklasse `Shape` und mehrere abgeleitete Klassen: `Circle`, `Rectangle`. In der Basisklasse ist eine virtuelle Funktion `area()` deklariert. Wenn ich versuche, das Projekt mit g++ zu kompilieren, gibt der Compiler den Fehler aus:
```
undefined reference to 'vtable for Shape'
```
Hier ist der vereinfachte Code:
shape.h:
```cpp
#ifndef SHAPE_H
#define SHAPE_H
class Shape {
public:
virtual double area() = 0; // pure virtual function
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) {}
// Habe vergessen, area() zu implementieren!
```
main.cpp:
```cpp
#include "circle.h"
int main() {
Circle c(5.0);
return 0;
}
```
Ich kompiliere so: `g++ main.cpp cir