I have three classes 1 base and two inherited.. problem is when I try to initialize the it says undefined reference to vtable constructor.Any help? thanks in advance.
Code:
#ifndef QUOTE_H_INCLUDED
#define QUOTE_H_INCLUDED
#include <string>
using namespace std;
class Quote{
public:
Quote()=default;
//Quote(Quote &q):bookNo(q.bookNo),price(q.price) { }
Quote(const string &book,double sales_price):bookNo(book),price(sales_price){}
string isbn() const {return bookNo;}
virtual double net_price(size_t n) const {return n*price;}
virtual ~Quote()=default;
static int max;
virtual void debug();
private:
string bookNo;
protected:
double price=0.0;
};
class Disc_quote:public Quote{
public:
Disc_quote() = default;
Disc_quote(const string &book, double price,size_t qty, double disc ): Quote(book,price), quantity(qty),discount(disc) {}
double net_price(size_t) const = 0 ;
//Disc_quote(Disc_quote &d):Quote(d),quantity(d.quantity),discount(d.discount) { }
protected:
size_t quantity = 0;
double discount = 0;
};
class Bulk_quote:public Disc_quote{
public:
//Bulk_quote(Bulk_quote &b):Disc_quote(b){}
Bulk_quote(const string& book,double p,size_t qty,double disc):Disc_quote(book,p,qty,disc) { }
double net_price(size_t n) const override;
void debug() override;
};
class No_disc : public Disc_quote {
public:
No_disc(const string &s,double price,size_t qt,double disc):Disc_quote(s,price,qt,disc) { }
double net_price(size_t n) const override {
if(quantity>100)
return price*quantity;
else
return price*quantity*(1-discount);
}
};
double print_total(ostream &os,const Quote &item,size_t n);
#endif // QUOTE_H_INCLUDED
when I try to declare such as
Bulk_quote("A",1,1,1) it gives error at line 34 that undefined reference to vtable for bulk_quote