VD
class IPrinter
{
public:
virtual void print(std::ostream& where) = 0;
}
class TwoStrings : public IPrinter
{
private:
std::string str1;
std::string str2;
public:
virtual void print(std::ostream& where) override
{
where << str1 << std::endl
<< str2 << std::endl;
}
}
....
TwoStrings t;
std::fstream fout("file.txt");
t.print(std::cout);
t.print(std::err);
t.print(fout);