Buenos dias,
para sobrecargar una funcion, las firmas que cada una tiene que ser distinta. Y el tipo que devuelve la funcion no es parte de la firma. Por ejemplo:
Código:
int UnaFuncion();
char* UnaFuncion(); // => error, la firma es igual
Para obtener una firma distinta, 2 maneras:
1. una diferencia en los paramtros de las funciones. Por ejemplo:
Código:
int UnaFuncion();
int UnaFuncion( int unNumero );
int UnaFuncion( int unNumero, int unOtroNumero);
// etc...
2. utilizar un modificator de función distinto. Por ejemplo:
Código:
int UnaFuncion();
int UnaFuncion() const;
En tu caso, no se cual seria la mejor solucion, pero ya puedes hacer esto (que seria mucho mucho mejor que lo que estas haciendo ahora):
Código:
void Imprimir(); // solo muestra
void Imprimir( std::string & texto); // muestra y asigna el texto en el parametro 'texto'
La secunda version de Imprimir toma una string en parametro y la rellena. Pasando la string por referencia, ganas tiempo al ejecucion, y a ademas respeta un metedo de desarollo muy famoso y comodo (RAII) que asegura una gestion correcta de memoria.
Hope it helps.