Hello guys. I got this problem in a small c++ project im working on. I have build classes for different geometric forms. And in the end i am suppose to get the periphery and the area.
But i get this weird problem in my kvadrat.h file.
It says:
/kvadrat.h|11|error: expected class-name before ‘{’ token|
And guys i am sorry for my useless english. And also i am sorry because some of the code are written in swedish. But i hope u can live with that.
But here is some of the words in the code translated:
Swedish - English
Kvadrat - square
Sida - Side
Bredd - Width
Hojd - Height
Rektangel - rectangle
Cirkel - Circle
Omkrets - periphery
First we got kvadrat.h
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
// kvadrat.h
#ifndef KVADRAT_H_INCLUDED
#define KVADRAT_H_INCLUDED
#include "rektangel.h"
#include "cirkel.h"
#include <string>
class kvadrat : public rektangel <<
|
{
public:
kvadrat(float sida);
Cirkel* getInnerCirkel();
std::string getFigureName();
};
#endif |
----------------------
here comes the cpp file
Kvadrat.cpp
code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
//kvadrat.cpp
#include "kvadrat.h"
#include "cirkel.h"
#include "rektangel.h"
kvadrat::kvadrat(float sida) : rektangel(memberBredd, memberHojd)
{
}
Cirkel* kvadrat::getInnerCirkel()
{
Cirkel *c = new Cirkel (memberBredd/2);
return c;
}
std::string kvadrat :: getFigureName()
{
return "Kvadrat";
}
|
--------------------
And here comes rektangel.h
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
|
//rektangel.h
#ifndef TRIANGEL_H_INCLUDED
#define TRIANGEL_H_INCLUDED
#include "figur.h"
class rektangel : public Figur{
public:
rektangel(float b,float h);
float getOmkrets();
float getArea();
std::string getFigureName();
~rektangel();
protected:
float memberBredd;
float memberHojd;
};
#endif
|
--------------------
And the cpp file for rektangel
Rektangel.cpp
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
|
//rektangel.cpp
#include"rektangel.h"
#include <string>
rektangel::rektangel(float b,float h) : memberBredd(b), memberHojd(h)
{
}
float rektangel::getOmkrets(){
return memberBredd+memberBredd+memberHojd+memberHojd;
}
float rektangel::getArea(){
return memberBredd*memberHojd;
}
std::string rektangel :: getFigureName()
{
return "rektangel";
}
|
---------------------------
here comes Cirkel.h
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
|
//cirkel.h
#ifndef CIRKEL_H_INCLUDED
#define CIRKEL_H_INCLUDED
#include "figur.h"
#include <string>
class Cirkel : public Figur {
public:
Cirkel(float radie); // Skapar en cirkel, Och ger den en odefinerad radie.
float getOmkrets();
float getArea();
std::string getFigureName();
~Cirkel();
protected:
float MemberRadie;
};
#endif
|
------------------------
And the cirkel .cppfile
Cirkel.cpp
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
|
#include "cirkel.h"
///constructor
Cirkel::Cirkel(float radie) : MemberRadie(radie)
{
}
/// Returnar Arean
float Cirkel::getArea()
{
return MemberRadie*MemberRadie*3.14;
}
/// Returnerar Omkrets
float Cirkel::getOmkrets()
{
return MemberRadie*2*3.14;
}
std::string Cirkel::getFigureName()
{
return "Cirkel";
}
/// Deconstructor
Cirkel::~Cirkel()
{
}
|
-------------
And here comes figur.h
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
#ifndef FIGUR_H_INCLUDED
#define FIGUR_H_INCLUDED
#include <string>
class Figur{
public:
virtual float getOmkrets() = 0; // Beräknar och returnerar figurens omkrets
virtual float getArea() = 0; // Beräknar och returnerar figurens area
virtual std::string getFigureName()= 0; // Returnerar figurens namn som sträng t.ex. ”cirkel”
};
#endif
|
-----------------------------------
And here we got the main file
Main.cpp
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
|
#include <iostream>
#include <string>
#include <cmath>
#include "cirkel.h"
#include "figur.h"
#include "triangel.h"
#include "kvadrat.h"
#include "rektangel.h"
using namespace std;
int main()
{
Figur *Figur[4];
Figur[0] = new Triangel(3,4,0);
Figur[1] = new rektangel(5,2);
Figur[2] = new kvadrat(6);
Figur[3] = new Cirkel(3);
for(int i=0; i<4; i++){
cout <<Figur[i]->getFigureName()<<endl
<< Figur[i]->getArea()<<endl
<< Figur[i]->getOmkrets()<<endl
<< endl;
}
return 0;
}
|
So if there is someone out there who could have a look at this i would be very happy. If you can find some syntax errors or something i just missed. Please tell me :)
And as i said b4. The problem is:
/kvadrat.h|11|error: expected class-name before ‘{’ token|
Thanks
//It3rat0r
SOLVE :: EDIT :: It was my IFNDEF and DEFINE in the rektangel.h that was just wasted. I used Triangel instad.