Я пытаюсь передать объект абстрактного класса как по ссылке, но он явно дает ошибку, когда я пытаюсь сохранить эти объекты в массиве указателей с тем же типом данных. Может кто-нибудь объяснить, что я делаю неправильно? Это в следующей функции:C++ хранение абстрактного объекта в массиве
void enterItem(DessertItem& item)
{
if (top != (maxSize-1))
{
arr[top] = &item;
top++;
}
}
dessertItem класс фактически является абстрактным классом и «аранжировка» представляет собой указатель массива dessertItem так что он может дать ссылку на любой новый объект всякий раз, когда он получает передается по ссылке. Я не могу понять, как я должен это делать? Вот класс:
class Checkout
{
////Maintains a list of DessertItem references.
protected:
int maxSize;
int top;
DessertItem **arr;
public:
Checkout()
{
///Creates a Checkout instance with an empty list of DessertItem's
this->maxSize=5;
this->top=0;
this->arr = new DessertItem*[maxSize];
for(int i=0; i<maxSize; i++)
{
arr[i]=NULL;
}
}
////Clears the Checkout to begin checking out a new set of items
void clear()
{
for(int i=0; i<maxSize; i++)
{
arr[i]=NULL;
}
}
//A DessertItem is added to the end of the list of items
void enterItem(DessertItem &item)
{
if(top!=(maxSize-1))
{
arr[top]=&item;
top++;
}
}
//Returns the number of DessertItem's in the list
int numberOfItems()
{
return this->top;
}
};
Пожалуйста, покажите нам сообщение об ошибке вы видите. – jweyrich
В нем говорится, что ожидается спецификатор типа. Что это значит на самом деле? –
где указано arr и верх? –