То, что вы называете toString - это в терминологии C++ оператор преобразования типа к строчному представлению.
Для своего класса X описываете: X::operator string( void ) { ... }
или (с определёнными сложностями): X::operator char*( void ) { ... }
to_string() в с++11 - это только набор нескольких перегруженных функций для строчного представления нескольких конкретных числовых типов ... например, таких как long double.
GavriKos:
Это потому же ;-), что у C++ классов нет какого-то такого общего прародителя Object, как, например, в Java или Python.
А создание его ничего нового к задаче строчного представления объектов произвольного класса не добавляет - для этого достаточно просто определить в классе (любом) оператор преобразования типа в string, например.
А во всех последующих наследованиях можете переопределять его или не переопределять ;-)