У меня есть класс в C ++ для того, чтобы писать файлы журналов для моего приложения. Я уже построил класс, и он работает, это что-то вроде этого:
class Logger {
std::string _filename;
public:
void print(std::string tobeprinted);
}
Хорошо, интуитивно понятно, что для печати строки в файле журнала для объекта Logger просто необходимо сделать следующее:
Logger mylogger("myfile.log");
mylogger.print(std::string("This is a log line"));
Хорошо. Использование методического подхода не то же самое, что использование гораздо лучшего шаблона, такого как << is.
Я хотел бы сделать следующее: </p>
Logger mylogger("myfile.log");
mylogger << "This is a log line";
Вот и все. Я полагаю, я должен перегрузить оператор << ... Но перегрузка с использованием этой подписи (классическая): </p>
ostream& operator<<(ostream& output, const MyObj& o);
Но у меня нет ostream ...
Итак, я должен сделать следующее?
Logger& operator<<(Logger& output, const std::string& o);
Это правильный путь?
Спасибо