您的位置:首页 > 编程语言 > C语言/C++

C++编译错误 - 0010 - undefined reference to `vtable for Bulk_item'

2013-03-01 22:54 417 查看
class Item_base

{

public:

Item_base(const std::string &book ="",double sales_price = 0.0):isbn(book),price(sales_price) {}

// Item_base(){};

std::string book() const { return isbn;}

virtual Item_base* testReturnType() { return NULL;}

virtual double net_price(std::size_t n) const

{

return n*price;

}

virtual ~Item_base() {}

private:

std::string isbn;

protected:

double price;

};

class Bulk_item:public Item_base

{

public:

double net_price(std::size_t cnt)const

{

if(cnt >= min_qty) return cnt * (1-discount)*price;

else

return cnt*price;

}

Bulk_item* testReturnType();// {return NULL;}

~Bulk_item(){}

private:

std::size_t min_qty;

double discount;

};

int main()

{

Item_base item;

Item_base *p = &item;//undefined reference to `vtable for Bulk_item'|

Bulk_item bulk;

p = &bulk;

return 0;

}

错误提示:undefined reference to `vtable for Bulk_item'

错误原因: 派生类 Bulk_item 没有定义基类的虚函数.

实际上只声明了函数而没有实现有可能会出现编译错误. 若调用了没有定义的函数,则必会出错.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐