¿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