Avatar ·

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