Gdy dodaje przykładowy element to wyświetla mi jego adres, a nie prawdziwa nazwe i wlasnosci.Klasa Squaree na pewno jest zaimplementowana w odpowiedni sposób i działa.
ShapeContainer.hpp
class ShapeContainer : public Shapee
{
std::vector<Shapee*> shapes;
public:
ShapeContainer();
~ShapeContainer() {};
void add(Shapee*);
void displayAll() const;
};
ShapeContainer.cpp
void ShapeContainer::add(Shapee*) {
Shapee *figura = new Rectanglee("x", 10,5);
shapes.push_back(figura);
}
void ShapeContainer::displayAll() const
{
for (Shapee* f : shapes) {
std::cout << f;
}
}
Shapee::Shapee(std::string name) { this->name = name; std::cout << "\nWywolano konstruktor klasy Shape " << std::endl; };
Shapee::~Shapee() { std::cout << "\nWywolano destruktor klasy Shape " << std::endl; };
void Shapee::setName(std::string name) { this->name = name; };
ShapeContainer::ShapeContainer() : Shapee(name) { std::cout << "\nWywolano konstruktor klasy ShapeContainer"; };
main.cpp
void ex2()
{
ShapeContainer x;
Squaree *z = new Squaree("kwadrat", 10);
x.add(z);
std::cout << "Zawartosc kolekcji figur: ";
x.displayAll();
delete z;
}