Ну, есть способ, которым вы можете использовать operator<<
, но это не красиво.Лично я использую библиотеку boost :: lexical_cast для преобразования практически любого типа данных в тип данных std :: string, который Pantheios изначально поддерживает.Поэтому, если у вас есть operator<<
, определенный для класса point
, вы можете просто набрать:
pantheios::log_ERROR("Point: ", boost::lexical_cast<string>(point_object))
Конечно, есть несколько предостережений с этим.Многие люди жалуются, что boost :: lexical_cast идет медленно.Вы можете найти его в Google и найти несколько статей, в которых говорится об этом (/1291310/ochen-plohoe-povyshenie-proizvoditelnost-lexicalcast, http://accu.org/index.php/journals/1375).. Учитывая то, что Pantheios обладает превосходной производительностью, вы можете потерять часть этого преимущества. И самое очевидное, вы можете добавить несколько сотен заголовочных файлов.в свой проект, когда вы добавляете boost :: lexical_cast. Вы также должны вводить больше букв (например, boost :: lexical_cast) для каждого преобразования (вы можете свести это к минимуму с помощью макроса - #define BLCS boost::lexical_cast<string>
- но это больше косвенное, чем некоторые люди могутбудьте удобны с).