ec::Rect::Base isn't being allocated dynamically, so it doesn't need to be deleted. Furthermore, it should not be deleted. Each instance of the new keyword should be matched with an instance of the delete keyword (this sentence isn't strictly true, but it's a good rule of thumb). If you didn't use new, don't use delete.
You still have undefined behavior in the program. The constructor is assigning a pointer to a locally constructed object to the pointer. Helios is correct but that isn't the only problem in your program.
Shape = sf::Shape::Rectangle(X, Y, X2, Y2, Fill, 1, Outline);
Base = &Shape;
Helios, where is the sf::shape type defined? Do you see it? What is the Rectangle? Is that a static function or a constructor? Without that information I do not see how to determine what is really happening in that line of code. It looked like it was calling a constructor or static function that returns an object or a pointer to an object.
Without that information I do not see how to determine what is really happening in that line of code. It looked like it was calling a constructor or static function that returns an object or a pointer to an object.
That doesn't change the fact that Shape is a member and that Base will remain valid for the entire lifetime of the ec::Rect object. There's not a single type you can give to Shape that will make the program compile but incorrect.