#pragma once #include namespace NeuralNetwork { class Stringifiable { public: virtual ~Stringifiable() { } /** * @brief This is a virtual function for class */ virtual void stringify(std::ostream& out) const =0; virtual std::string stringify() final { std::ostringstream s; stringify(s); return s.str(); } }; static std::ostream& operator<<(std::ostream& o, const Stringifiable& n) { n.stringify(o); return o; } }