【发布时间】:2011-10-19 03:35:04
【问题描述】:
我在使用继承和 STL 列表库时遇到问题...
比如说,我有一个带有两个派生类的抽象基类(其中定义了所有比较运算符)。该列表被声明为
list<StoreItem*> items;
我正在插入一个名为 Food 或 Clothing 的派生类(抽象基类 StoreItem)。我创建了一个即将插入的新 StoreItem 指针:
StoreItem* item = new Food(arguments here);
现在,我想将这个新项目(按顺序)插入到列表中,我的尝试是这样的:
list<StoreItem*>::iterator iter;
for (iter = inventory.begin(); iter != inventory.end(); iter++)
{
if (*item < **iter)
break; // break out to insert
}
inventory.insert(iter, item);
我做错了什么吗?另外,我将如何从库存中提取信息? (例如:使用复制构造函数的 Food tempFruit(**iter))。
提前感谢您!祝你有美好的一天。
【问题讨论】:
-
问题到底是什么?您是在问以您这样做的方式进行比较是否从根本上正确/错误,还是您的代码有问题?
-
您是否为您的班级定义了运算符
<? -
我主要遇到的问题是我不知道为什么这样做:Food tempMovie(*iter);它要求Food::Food(const StoreItem)的定义,当插入的**iter的数据类型显然首先是Food时。
标签: c++ inheritance pointers stl abstract-base-class