次のヘッダーファイルのコンパイル中に、「vtable for student」への未定義の参照を取得しています。
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(){}
これで何が悪いのかわかりません。
virtual
関数を宣言し、定義していません。
virtual void calculateCredits();
定義するか、次のように宣言します。
virtual void calculateCredits() = 0;
または単に:
virtual void calculateCredits() { };
Vftableの詳細: http://en.wikipedia.org/wiki/Virtual_method_table