Что в основном вопрос, есть ли "правильный" способ реализовать operator<<
?
Чтение this Я вижу, что-то вроде:
friend bool operator<<(obj const& lhs, obj const& rhs);
предпочтительнее, чем
ostream& operator<<(obj const& rhs);
Но я не могу понять, почему я должен использовать тот или иной.
Мое личное дело:
friend ostream & operator<<(ostream &os, const Paragraph& p) {
return os << p.to_str();
}
Но я мог бы сделать:
ostream & operator<<(ostream &os) {
return os << paragraph;
}
Какое обоснование я должен основывать на этом решении?
Примечание:
Paragraph::to_str = (return paragraph)
где абзац строка.