I'm encountering an error when trying to create an object which inherits from a class which inherits from a class which defines pure virtual functions. I'm not sure what is wrong. I know I need to override the pure virtual functions in my derived class but it's not working. I only want to override the function in my ProduceItem class and not my Celery class because I want the Celery class to inherit the overridden methods from ProduceItem.
In Main:
GroceryItem *cel = new Celery(1.5); //Cannot cast 'Celery' to its private base class GroceryItem
class GroceryItem
{
public:
virtual double GetPrice() = 0;
virtual double GetWeight() = 0;
virtual std::string GetDescription() = 0;
protected:
double price;
double weight;
std::string description;
};
ProduceItem header file:
#include "GroceryItem.h"
class ProduceItem : public GroceryItem
{
public:
ProduceItem(double costPerPound);
double GetCost();
double GetWeight();
double GetPrice();
std::string GetDescription();
protected:
double costPerPound;
};
ProduceItem.cpp file:
#include <stdio.h>
#include "ProduceItem.h"
ProduceItem::ProduceItem(double costPerPound)
{
price = costPerPound * weight;
}
double ProduceItem::GetCost()
{
return costPerPound * weight;
}
double ProduceItem::GetWeight()
{
return weight;
}
double ProduceItem::GetPrice()
{
return price;
}
std::string ProduceItem::GetDescription()
{
return description;
}
Celery header file:
#ifndef Lab16_Celery_h
#define Lab16_Celery_h
#include "ProduceItem.h"
class Celery : ProduceItem
{
public:
Celery(double weight);
double GetWeight();
double GetPrice();
std::string GetDescription();
};
#endif
Celery.cpp file:
#include <stdio.h>
#include "Celery.h"
Celery::Celery(double weight) : ProduceItem(0.79)
{
ProduceItem::weight = weight;
description = std::string("Celery");
}