Перегрузка оператора << внутри класса

Я обычно храню свои классы в 2 файлах: class.h и class.cpp

Я хочу сделать что-то вроде cout << myclass;

Я нашел примеры, такие как:

friend ostream& operator<<(ostream &os, XXLint)
{ // do stuff
}

Но вышеприведенная функция объясняется сразу после объявления.

Как мне объявить это в myclass.h, чтобы иметь возможность использовать его в myclass.cpp? А также, что будет весь заголовок функции в файле.cpp (например: myclass::myclass()).

1 ответ

Решение

В определении класса в шапке:

struct Foo
{
  int a, b;
  friend std::ostream& operator<<(std::ostream &os, const Foo&);
};

В реализации (например, .cpp файл):

std::ostream& operator<<(std::ostream &os, const Foo& f)
{
  return os << f.a << " " << f.b;
}
Другие вопросы по тегам