#pragma once class FileReader; #include class FileStrategy { protected: virtual void open(const std::string url) = 0; public: virtual void close() = 0; virtual const std::string read() = 0; public: virtual ~FileStrategy() = default; protected: FileStrategy() = default; virtual FileStrategy * clone() const = 0; protected: FileStrategy(const std::string protocol); friend FileReader; };