AdvC++ - converter zrobiony przez wykładowcę bo brak czasu

This commit is contained in:
Sasza Stanczew 2024-04-26 16:03:17 +02:00
parent 24943a4282
commit 385967d3b8

View file

@ -16,20 +16,20 @@ private:
class Converter { class Converter {
public: public:
virtual void Convert(Resource* resource) = 0; virtual void Convert(const Resource& resource) = 0;
}; };
class CurlyBracketConverter : public Converter { class CurlyBracketConverter : public Converter {
public: public:
virtual void Convert(Resource* resource) { virtual void Convert(const Resource& resource) {
std::cout << "{" << resource->str() << "}\n"; std::cout << "{" << resource.str() << "}\n";
} }
}; };
class SquareBracketConverter : public Converter { class SquareBracketConverter : public Converter {
public: public:
virtual void Convert(Resource* resource) { virtual void Convert(const Resource& resource) {
std::cout << "[" << resource->str() << "]\n"; std::cout << "[" << resource.str() << "]\n";
} }
}; };
@ -37,7 +37,7 @@ class Printer {
public: public:
Printer(Converter* converter): converter_(converter) {} Printer(Converter* converter): converter_(converter) {}
void Print(Resource* resource) { void Print(const Resource& resource) {
converter_->Convert(resource); converter_->Convert(resource);
} }
@ -46,14 +46,12 @@ private:
}; };
int main() { int main() {
Resource* resource = new Resource("Ala has a cat"); auto resource = std::make_unique<Resource>("Ala has a cat");
Printer printer(new SquareBracketConverter{}); Printer printer(new SquareBracketConverter{});
Printer printer2(new CurlyBracketConverter{}); Printer printer2(new CurlyBracketConverter{});
printer.Print(resource); printer.Print(*resource);
printer2.Print(resource); printer2.Print(*resource);
delete resource;
return 0; return 0;
} }