c++ inheritance expected class name before token

Nov 26, 2016 at 6:11pm
Halo guys i have error message expected-class name before "{" token
here is my code
////////////////////////////////////////////////////////////////////

#ifndef COCKTAILMACHINE_H
#define COCKTAILMACHINE_H
#include "Cocktail.h"
#include "Ingredient.h"
#include "Dispenser.h"
#include "CocktailSimulator.h"
#include <fstream>
#include <vector>
#include <iostream>
#include <cstdlib>
#include <string>


using namespace std;

class CocktailMachine : public CocktailSimulator // <----- ERROR HERE
{
public :
CocktailMachine();
virtual ~CocktailMachine();

//Funktion
void makeCocktail(int);

//setter
void setCocktails(Cocktail*);

//getter
vector<Ingredient*> getIngredients();
vector<Dispenser*> getDispensers();
vector<Cocktail*> getCocktails();

private:

Ingredient* ingredientObj;
Dispenser* dispenserObj;
Cocktail* cocktailObj;
vector<Ingredient*> ingredients;
vector<Dispenser*> dispensers;
vector<Cocktail*> cocktails;
};

#endif // COCKTAILMACHINE_H

//////////////////////////////////////////////////////////////////////
and here is my CocktailSimulator

/////////////////////////////////////////////////////////////////////

#ifndef COCKTAILSIMULATOR_H
#define COCKTAILSIMULATOR_H
#include "CocktailMachine.h"


class CocktailSimulator
{
public:
virtual void MakeCocktail(Cocktail* ) = 0;
//Funktion
virtual void makeCocktail(int) = 0;

//setter
virtual void setCocktails(Cocktail*) = 0;

//getter
virtual vector<Ingredient*> getIngredients() = 0;
virtual vector<Dispenser*> getDispensers() = 0;
virtual vector<Cocktail*> getCocktails() = 0;
private:
};

#endif // COCKTAILSIMULATOR_H
///////////////////////////////////////////////////////////////////

can someone help me ?
i already put #include "CocktailSimulator.h" in class CocktailMachine but still get error message.
Nov 26, 2016 at 6:19pm
The problem is that you have a circular dependency.

1. CocktailSimulator.h includes CocktailMachine.h.
2. CocktailMachine.h tries to include CocktailSimulator.h but the include guard prevents the content of CocktailSimulator.h from being included.
3. CocktailMachine.h tries to define CocktailMachine as a subclass of CocktailSimulator but that doesn't work because CocktailSimulator has not yet been defined.

The solution is to not include CocktailMachine.h from CocktailSimulator.h.
Last edited on Nov 26, 2016 at 6:21pm
Nov 26, 2016 at 7:47pm
thx you sir its work now
Topic archived. No new replies allowed.