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