**关闭。**此题需要debugging details。目前不接受答复。
编辑问题以包括desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem。这将帮助其他人回答这个问题。
昨天关门了。
Improve this question
我必须写一个程序,必须包含指向基类对象的指针数组。基类“Order”仅包含虚函数“displayOrderDetails()”。派生类:FoodOrder、DrinkOrder、DessertOrder包含食物的名称、数量和displayOrderDetails()函数。然后,我创建了3个表与3个客户每个订单。这是我的主.cpp:
#include <iostream>
#include "Order.h"
#include "FoodOrder.h"
#include "DrinkOrder.h"
#include "DessertOrder.h"
using namespace std;
int main()
{
const int tables = 3;
const int guests =3 ;
Order*** orders= new Order**[tables];
for (int i = 0; i < tables; i++) {
orders[i] = new Order*[guests];
for (int j=0; j < guests;j++) {
orders[i][j] = new Order*[3];
}
}
//Table 1
orders[0][0][0] = new FoodOrder("Bigos", 1);
orders[0][1][1] = new DrinkOrder("Herbata", 2);
orders[0][2][2] = new DessertOrder("Kremowka", 3);
// Table 2
orders[1][0][0]= new FoodOrder("Zalewajka", 1);
orders[1][1][1]= new DrinkOrder("Kompot", 1);
orders[1][2][2]= new DessertOrder("W-Z", 2);
// Table 3
orders[2][0] [0]= new FoodOrder("Schabowy", 2);
orders[2][1] [1]= new DrinkOrder("Lorneta", 1);
orders[2][2] [2]= new DessertOrder("Galareta", 3);
for (int i = 0; i < tables; i++) {
for (int j = 0; j < guests; j++) {
for (int k = 0; k < 3; k++) {
if (orders[i][j][k] != nullptr) {
orders[i][j][k]->displayOrderDetails();
}
}
}
}
for (int i = 0; i < tables; i++) {
for (int j = 0; j < guests; j++) {
for (int k = 0; k < 3; k++) {
delete orders[i][j][k];
}
delete[] orders[i][j];
}
delete[] orders[i];
}
delete[] orders;
return 0;
}
我在line中有一个错误:[i][j] = new Order*[3];:无法在分配中将“Order**”转换为“Order*”|我希望有人能帮助我纠正它或建议其他解决方案。
1条答案
按热度按时间ulmd4ohb1#
行
orders[i][j] = new Order*[3]
应该是orders[i][j] = new Order[3]
,因为数组已经算作指针。new Order*[3]
表示指向一个指针(两个指针)的指针,而orders[i][j]
的值只是一个指针(因为它有两个指针深,你使用的指针总数是3)。