我的类结构如下:
1
/ \
2 3
||| ||
4 5 6 7 8
和一个保持指向1的向量.1有三个纯虚函数,所有这些函数都被重写以返回2和3中的默认值,然后是4到8中的特定值。
通过类和两个违规函数控制向量:
class Vector
{
public:
Vector();
void vectorAdd(Food* food)
{
mList.push_back(food);
}
//The two offending functions. The functions they point to are pure
//virtual in the Food class and overridden in the derived classes.
string getDescription(size_t index)
{
return mList[index]->getDescription();
}
double getPrice(size_t index)
{
return mList[index]->getPrice();
}
private:
vector<Food*> mList;
};
我通过以下方式添加来自int main的向量:
list.vectorAdd(&Spaghetti);
代码全部编译,但每当我调用Vector :: getDescription(index)或Vector :: getPrice(index)时,我都会收到一个Debug Error,但没有关于出错的信息。
答案 0 :(得分:1)
此处的问题是,您的vectorAdd
函数参数应为Food*
类型,而不是*Food
。
void vectorAdd(Food* pFood)
{
mList.push_back(pFood);
}
答案 1 :(得分:0)
发现问题,需要使用(新...)而不是(&amp; ...)