Я относительно не знаком с C++. Пожалуйста, извините мою терминологию, если она неверна. Я попытался найти ответ на свой вопрос, но я не мог его найти (возможно, потому, что я не мог правильно сформулировать свой вопрос). Я был бы признателен, если бы кто-то мог мне помочь.Печать текстового представления объектов
Я пытаюсь написать класс для создания строк, которые могут содержать текстовое представление объектов или родных типов. По сути, у меня есть
private:
stringstream ss;
public:
template< typename T >
Message& operator<<(const T& value) {
ss << value;
return *this;
}
Перегруженный < < оператор принимает некоторое значение и пытается транслировать его в stringstream. Я думаю, что мой компилятор в порядке с этим, если T
что-то вроде int
, или если класс T
определяет метод operator std::string()
. Однако, если T
- это какой-то тип, такой как vector<int>
, то он больше не работает, потому что vector<int>
не определяет operator std::string()
.
В любом случае я мог бы перегрузить этот оператор так, чтобы, если T
определяет operator std::string()
, тогда я печатаю текстовое представление, а если нет, я просто печатаю его адрес?
Спасибо.