EDIT: C ++ link undefined link to `vtable
I am trying to make a project to inherit, and I get this error:
/tmp/ccw1aT69.o: In function `main': main.cpp:(.text+0x15): undefined reference to `Derived::Derived(int)' /tmp/ccw1aT69.o: In function `Derived::~Derived()': main.cpp:(.text._ZN20DerivedD2Ev[_ZN20DerivedD5Ev]+0x13): undefined reference to `vtable for Derived' main.cpp:(.text._ZN20DerivedD2Ev[_ZN20DerivedD5Ev]+0x1f): undefined reference to `Base::~Base()' collect2: ld returned 1 exit status
This is my code:
main.cpp:
#include <iostream> #include "Base.h" #include "Derived.h" int main() { Derived intList(25); }
base.h:
#ifndef BASE_H #define BASE_H class Base { public: ... Base (const Base& otherList); virtual ~Base(); protected: int *list; int length; int maxSize; }; #endif
Base.cpp:
#include "Base.h" #include <iostream> using namespace std; ...definitions of my members... Base::Base (int size) { //stuff } Base::~Base() { delete [] list; } Base::Base (const Base& otherList) { //stuff }
Derived.h:
#ifndef DERIVED_H #define DERIVED_H #include "Base.h" class Derived: public Base { public: ... Derived (int size = 100); ~Derived();
Derived.cpp:
#include "Derived.h" #include <iostream> using namespace std; Derived::Derived (int size) :Base(size){ }
What causes this error? It looks like I can't call the constructor, but I'm fine.
EDIT: I tried the first solution. Error:
/tmp/ccA4XA0B.o: In function `main': main.cpp:(.text+0x15): undefined reference to `Derived::Derived(int)' main.cpp:(.text+0x21): undefined reference to `Derived::~Derived()' collect2: ld returned 1 exit status
source share