undefined reference to 'vtable for class' constructor

c++, class, constructor

Solution

You're declaring a `virtual` function and not defining it:

`virtual void calculateCredits();`

Either define it or declare it as:

`virtual void calculateCredits() = 0;`

Or simply:

`virtual void calculateCredits() { };`

Read more about vftable: http://en.wikipedia.org/wiki/Virtual_method_table

Problem

I am getting an undefined reference to `vtable for student' while compiling the following header file: student.h ``` class student { private: string names; string address; string type; protected: float marks; int credits; public: student(); student(string n,string a,string t,float m); ~student(); string getNames(); string getAddress(); string getType(); float getMarks(); virtual void calculateCredits(); int getCredits(); }; student::student(){} student::student(string n, string a,string t,float m) { names = n; address = a; marks = m; } student::~student(){} ``` I can't find what is wrong in this.

Original source

Related problems