[C con Clase] DUDA CONTENEDOR
Steven Davidson
srd4121 en njit.edu
Mar Jun 23 20:27:21 CEST 2009
Hola Pedro,
Pedro Rodríguez González wrote:
> Gracias David y gracias a Steve...
>
> FUNCIONA SIN PROBLEMAS!!!
>
De nada; para eso estamos :)
> MiContenedor Lista()
> {
> MiContenedor MC;
> ...
> return MC;
> }
> ...
> pero y si quisiera que me devolviera una referencia sin pasarle un
> argumento
> ...
> MiContenedor& Lista( /* MiContenedor &MC */ )
> {
> ...
> return MC;
> }
>
Lo único que serviría es que tal objeto exista fuera de la función. Esto
sería, si el objeto es global o si creamos memoria dinámicamente. Por
ejemplo,
// Global
MiContenedor MC;
MiContenedor& Lista()
{
...
return MC;
}
Claro que si hacemos esto, no hay necesidad de retornar nada, porque
'MC' es global.
Con la otra opción, tenemos lo siguiente:
MiContenedor& Lista()
{
MiContenedor *pMC = new MiContenedor;
...
return *pMC;
}
Con esto último, tenemos que liberar la memoria en algún momento de
nuestro programa. Ninguno de estos casos es recomendable.
> ...
> ...
> Queda otra opción, alguna idea? de todas formas escapo con ese
> arreglo... pero lo ideal sería lo segundo propuesto
>
No veo por qué dices que es ideal retornar una referencia a un objeto.
En C++, nos es igual tratar un objeto directamente que a través de una
referencia. Recuerda que una referencia no es más que otro nombre
alternativo - un sobrenombre. Esto significa que el objeto debe existir
en alguna parte.
Ahora bien, si requieres polimorfismo, entonces debes tratar los objetos
a través de una referencia o de un puntero. Pero sospecho que esto no es
el caso.
Espero haber aclarado el tema.
Steven
Más información sobre la lista de distribución Cconclase