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.