¿Es posible cambiar el tipo de retorno al anular una función virtual en C ++?

Me encuentro con un problema sobre anular funciones virtuales, de hecho, se trata de hessian (un protocolo de servicio web).

tiene una clase base Object, y algunas clases derivadas: Long, Int, String, ..., todas las clases derivadas tienen una función "virtual" no virtual

   class Object  
   {  
     ...    
   };  


   class Long :public Object  
   {  
       ...  
   public:  
       typedef long long  basic_type;  
       basic_type value(){return value_;}  
   private:  
       basic_type value_;  
       ...  
   };  


   class Int :public Object  
   {  
      ...  
   public:  
       typedef int basic_type;  
       basic_type value(){return value_;}  
   private:   
       basic_type value_;  
       ...  
   };  

ahora quiero agregar una función, por ejemplo, toString, que puede convertir Object en una cadena:

Object *obj  = ...
cout<<obj->toString();

si puedo cambiar la función de valor a virtual, solo necesito escribir una función toString en Object, de lo contrario, necesito escribir una función virtual enString y anular estas funciones en todas las clases derivadas.

por ejemplo

   class Object  
   {  
       virtual Type value(); // It seemed that I can't write a function like this,because the Type is different for different derived classes  


       std::string toString()  
       {  
           some_convert_function(value());  
       }  

   };  

pero no puedo escribir una función de valor virtual porque el valor de retorno no se puede anular.

¿Hay alguna buena solución para este problema?

Gracias

Respuestas a la pregunta(6)

Su respuesta a la pregunta