Можно ли перегрузить оператор << для пользовательского класса таким образом, чтобы сработало все следующее: </p>
CustomClass customClass;
std::shared_ptr<CustomClass> sharedPointer(customClass);
os << customClass;
os << sharedPointer;
или что хотя бы следующие работы:
os << sharedPointer.get();
По умолчанию, используя общую технику для перегрузки operator
, будут работать только следующие 2 опции:
os << customClass;
os << *sharedPointer.get();
Редактировать
«рабочий» здесь означает, что во всех случаях выполняется перегрузка оператора пользовательских классов <<
и что во всех случаях я получаю результат os << customClass
вместо адресов указателей в случае классов указателей
Пример * * тысяча двадцать-один
Код:
os << customClass;
os << sharedPointer;
os << sharedPointer.get();
os << *sharedPointer.get();
Выход:
Custom class text
00000244125655C0
00000244125655C0
Custom class text
Желаемая:
На втором или третьем выводе должен быть также «Текст пользовательского класса»