I am getting an error compiling the following code.
Beverage is a private member of type pointer to BeerScore.
I create a new AleScore and assign it to Beverage (AleScore inherits from BeerScore).
I am getting an error calling Beverage.Read(); immediately after.
/home/curlious/assignment7/src/beveragecreator.cpp:54: error: request for member `Read' in `((BeverageCreator*)this)->BeverageCreator::Beverage', which is of non-class type `BeerScore*'
Code:
#include "beveragecreator.h"
#include <stdlib.h>
#
#include "beerscore.h"
#include "alescore.h"
#include "lagerscore.h"
BeverageCreator::BeverageCreator()
{
}
BeerScore * BeverageCreator::CreateBeverage(vector<string>& BeverageMessage)
{
vector<string> Beverages;
Beverages.push_back("Ale"); Beverages.push_back("Lager"); Beverages.push_back("Malt Liquor"); Beverages.push_back("Wine Cooler");
int TypeIndex = 0;
vector<string>::iterator TypeLookup;
for (TypeLookup = Beverages.begin(); TypeLookup != Beverages.end(); TypeLookup++)
{
if (BeverageMessage[0] == *TypeLookup)
break;
TypeIndex++;
}
BeverageMessage.erase(BeverageMessage.begin());
switch (TypeIndex)
{
case 0:
Beverage = new AleScore();
Beverage.Read(BeverageMessage); //problem here
return Beverage;
case 1:
Beverage = new
LagerScore(BeverageMessage[2],atoi(BeverageMessage[3].chars()),atoi(BeverageMessage[4].chars()),atoi(BeverageMessage[5].chars()));
return Beverage;
case 2:
case 3:
default:
break;
}
}