Перегрузка оператора << внутри класса
Я обычно храню свои классы в 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;
}