C ++ Формат для Cout << Автоматически - PullRequest
5 голосов
/ 21 июля 2011

Если бы у меня был простой класс с двумя переменными, x и y, и функцией ToString (), которая возвращает отформатированную строку с данными. Когда я звоню

cout << simpleClass << "\n";

Кто-нибудь знает, как я мог бы автоматически вызывать simpleClass.ToString для возврата правильно отформатированной строки? Я предполагаю, что есть способ сделать это с помощью операторских функций, но я не знаю, как бы я это сделал.

Ответы [ 2 ]

9 голосов
/ 21 июля 2011

Если вы спрашиваете, как определить такой оператор,

template<class CharT, class TraitsT>
std::basic_ostream<CharT, TraitsT>&
operator <<(std::basic_ostream<CharT, TraitsT>& os, SimpleClass const& sc)
{
    return os << sc.ToString();
}
2 голосов
/ 21 июля 2011

Вы определяете

std::ostream& operator <<(std::ostream&, const SimpleClass&)

для вызова ToString(), передавая ostream& и возвращая ostream&.

...