Просто создайте перегруженный operator<<
для вашего Foo
типа объекта.Это можно сделать, создав функцию, которая принимает члены вашего Foo
типа объекта и передает их через operator<<
в ostream
тип объекта.Вот очень простой пример:
ostream& operator<<(ostream& out, Foo output_object)
{
out << egg << " " << bar;
return out;
}
Это работает, потому что типы int
, которые вы используете в качестве членов вашего Foo
типа объекта, вызывают перегруженную версию operator<<
для ostream
и int
.Поэтому, если объекты, являющиеся частью вашего Foo
типа, еще не перегружены, вам также придется создавать перегруженные operator<<
функции для этих типов.
Как только это будет сделано, ваш код можетвызываться в любом месте следующим образом:
Foo test;
cout << test; //will print out whatever the values of "egg" and "bar" are
Кроме того, любой другой код, который пытается использовать operator<<
с объектом ostream
и вашим типом Foo
в качестве операндов, также будет работать правильно.
Наконец, вы можете либо inline
перегруженной функции и поместить ее в заголовочный файл, либо вы можете создать объявление функции в заголовке, а затем определить функцию в модуле кода где-то еще.