Если вы хотите вывести только идентификатор, то, вероятно, лучше всего предоставить метод для получения идентификатора в типе, который можно преобразовать (например, std::string id() const;
).Это гораздо более интуитивно понятно для других людей, работающих над кодом, чем использование какого-то странного оператора.
Ваше предложение <<<
(невозможно создать новые операторы в C ++, но на мгновение игнорируем это) показывает, что вырады, что в точке вызова будет другой код.Следовательно, единственным преимуществом, которое вы получите, будет сохранение исходного кода из нескольких символов;это не стоит запутывания.
В отличие от этого, существуют ситуации, когда вы хотите, чтобы одна и та же потоковая нотация вызывала различные варианты поведения, такие как переключение между только идентификатором и полными данными, или разные представления, такие кактег / значение, CSV, XML и двоичный файл.Эти альтернативы обычно лучше всего сообщать либо:
- с использованием различных типов потоков (например, XMLStream, а не
std::ostream
) и определением XMLStream& operator<<(XMLStream&, const My_Type&)
и т. Д., И / или - с использованием потокаманипуляторы - вы можете создать свой собственный - случайный результат Google: http://www.informit.com/articles/article.aspx?p=171014&seqNum=2