我正在尝试创建一个程序来接受食物订单并将其打印出来。我有我的基类 Food
其中有一个纯虚函数。食品类有 2 个子类 Pizza
和 Dessert
。我正在尝试在我的 main
Food
的数组,所以当客户订购 Pizza
或 Dessert
时,它将被存储在 —1cc75bfea8405f101 中 Food
的数组。但每次我尝试,我都会得到一个错误。如果我想使用循环遍历客户订购的每件商品,我应该如何将这两个商品放在一起?这是我的代码:
int main()
{
Dessert d("brownie");
Pizza p("BBQ delux");
Food array[2] = {d,p};
}
这是我的错误信息。 (注意: get_set_price()
和 print_food()
是我在基类中定义并在 2 个子类中实现的纯虚函数)
main.cpp:37:14: error: invalid abstract type ‘Food’ for ‘array’
Food array[2] = {d,p};
In file included from main.cpp:4:0:
Food.h:5:7: note: because the following virtual functions are pure within ‘Food’:
class Food
^
Food.h:20:15: note: virtual void Food::get_set_price()
virtual void get_set_price()=0;
^
Food.h:27:15: note: virtual void Food::print_food()
virtual void print_food()=0;
^
main.cpp:37:22: error: cannot allocate an object of abstract type ‘Food’
Food array[2] = {f,o};
^
原文由 Safwan Ull Karim 发布,翻译遵循 CC BY-SA 4.0 许可协议
您不能创建抽象类的实例,但可以将具体派生实例的指针或引用分别分配给基类的指针或引用。
然后使用
array