Code:
#ifndef SHAPE_H
#define SHAPE_H
#include <string.h>
using std::string;
using namespace std;
class Shape
{
public:
Shape(const string &color); //constructor
~Shape();
string getColor()const; //returns objects color value
virtual double area()const = 0;// a const pure virtual member function that computes and returns the object's area
virtual string toString() const = 0; //a const pure virtual member function that returns the shape's description
private:
string s_color;
};
#endif //SHAPE_H
#include <string>
using std::string;
#include <sstream>
#include <iostream>
using std::cout;
using std::cin;
using std::endl;
#include "square.h"
//ctor
square::square(const string &color, double length)
:Shape(color)
{
length = len;
}//end ctor
//dtor
double square::getLength()
{
return len;
}
//Function to calculate are
double square::area()const
{
return len * len;
}//end function to calculate area
//Function to returns square's description
string square::toString()const
{
ostringstream os;
os << getColor() <<"square with side length of " << len << " " << "and area of " << area();
return os.str();
}//end of function to return's square description
#include <string>
using std::string;
#include <sstream>
#include <iostream>
using std::cout;
using std::cin;
using std::endl;
#include "rectangle.h"
//ctor
rectangle::rectangle(const string &color, double width, double length)
:Shape(color)
{
length = len;
wid = width;
}//end ctor
//dtor
double rectangle::getWidth()
{
return wid;
}
double rectangle::getLength()
{
return len;
}
//function to calculate rectangle area
double rectangle::area() const
{
return len * wid;
}//end function to get rectangle area
//returns rectangle's description
string rectangle::toString()const
{
ostringstream os;
os << getColor() <<"rectangle with length of " << len << " and width of " << wid << " and area of " << area();
return os.str();
}//end function to return rectangle's description
#include <string>
using std::string;
#include <sstream>
#include <iostream>
using std::cout;
using std::cin;
using std::endl;
#include "circle.h"
//ctor
circle::circle(const string& color, double radius)
:Shape(color)
{
radius = rad;
}//end ctor
double circle::getRadius()
{
return rad;
}
//function to calculate circle area
double circle::area()const
{
return rad * rad * 3.14;
}//end function to get circle area
//returns circle description
string circle::toString()const
{
ostringstream os;
os << getColor() <<" circle with radius of " << rad << " and area of " << area();
return os.str();
}//end function to return circle description
#include <string>
using std::string;
#include <iostream>
using std::cout;
using std::cin;
using std::endl;
#include "circle.h"
#include "rectangle.h"
#include "square.h"
Shape* getShape()
{
int i;
string shapetype;
char choice;
Shape* myShape[6];
cout << "Creating a Shape ";
cout << "============================================== "<<endl;
cout << " 1: Create a circle "<<endl;
cout << " 2: Create a rectangle "<<endl;
cout << " 3: Create a square "<<endl;
cout << " 4: Done "<<endl;
cout << "============================================== "<<endl;
for ( i = 0; i < 6; ++i){
cout << "Enter number for shapetype" <<endl;
switch(choice){
case '1':
cout << "\nEnter the shape's color (or 'done')...";
cin >> s_color ;
cout << "\nEnter shape type..." ;
cin >> shapetype;
cout << "\nEnter radius.... ";
cin >> radius;
myShape[i] = new circle(color, radius);
break;
case '2':
cout << "\nEnter the shape's color (or 'done')...";
cin >> color;
cout << "\nEnter shape type...";
cin >> shapetype;
cout << "\nEnter the length and width.... ";
cin >> width >> length;
myShape[i] = new rectangle(color, length, width);
break;
case '3':
cout << "\nEnter the shape's color (or 'done')...";
cin >> color;
cout <<"\nEnter shape type...";
cin >> shapetype;
cout << "\nEnter the length of a side...";
cin >> length;
myShape[i] = new square(color, length);
break;
case '4':
cout <<"\nEnter the shape's color (or 'done')....";
cout << "done"<< endl;}
}
return myShape[i];
}
For some reason when i try to call the getShape function in main, it doesn't work. the toString function doesnt work neither.