Ayuda con Plantillas de Clases que tiene operadores sobrecargados
Hola.
Agradeceria muchisimo si alguien pudiera darme algo de luz en el siguiente problema.
Tengo la siguiente clase:
#ifndef _P5_CONTENEDOR_H_
#define _P5_CONTENEDOR_H_
template < class T >
class P5Contenedor {
public:
P5Contenedor (void);
P5Contenedor(const T &unT, P5Contenedor<T> *prev, P5Contenedor<T> *sig);
T& getValor();
void setValor(const T& valor);
P5Contenedor<T>* getPrevio();
void setPrevio(P5Contenedor<T>* previo);
P5Contenedor<T>* getSiguiente();
void setSiguiente(P5Contenedor<T>* siguiente);
private:
P5Contenedor<T>* previo;
P5Contenedor<T>* siguiente;
T valor;
};
#endif
y la siguiente clase:
#ifndef _P5_LISTACIRCULARORDENADA_H_
#define _P5_LISTACIRCULARORDENADA_H_
#include "P5Contenedor.h"
#include <iostream>
using namespace std;
template <class T>
class P5ListaCircularOrdenada
{
private:
P5Contenedor<T>* cabeza;
int numeroElementos;
public:
P5ListaCircularOrdenada (void);
~P5ListaCircularOrdenada (void);
void insertarElemento (const T & elemento);
void mostrarListaAscendente (ostream & s) const;
void mostrarListaDescendente (ostream & s) const;
int buscarElemento (const T & elemento) const;
void borrarElementoEn (int pos);
int getNumeroElementos (void) const;
friend ofstream & operator << (ofstream & out, P5ListaCircularOrdenada <T> & lista);
};
#endif
y te expongo la implementaci贸n de uno de los m茅todos de la segunda clase:
template <class T>
inline int P5ListaCircularOrdenada <T> :: getNumeroElementos (void) const
{
return numeroElementos;
}
Bueno pues mi problema es el siguiente, 驴Como se realiza la impelementaci贸n del c贸digo del operador << en el archivo P5ListaCircularEnlazada.cpp de la clase?
Muchas gracias de antemano.
Agradeceria muchisimo si alguien pudiera darme algo de luz en el siguiente problema.
Tengo la siguiente clase:
#ifndef _P5_CONTENEDOR_H_
#define _P5_CONTENEDOR_H_
template < class T >
class P5Contenedor {
public:
P5Contenedor (void);
P5Contenedor(const T &unT, P5Contenedor<T> *prev, P5Contenedor<T> *sig);
T& getValor();
void setValor(const T& valor);
P5Contenedor<T>* getPrevio();
void setPrevio(P5Contenedor<T>* previo);
P5Contenedor<T>* getSiguiente();
void setSiguiente(P5Contenedor<T>* siguiente);
private:
P5Contenedor<T>* previo;
P5Contenedor<T>* siguiente;
T valor;
};
#endif
y la siguiente clase:
#ifndef _P5_LISTACIRCULARORDENADA_H_
#define _P5_LISTACIRCULARORDENADA_H_
#include "P5Contenedor.h"
#include <iostream>
using namespace std;
template <class T>
class P5ListaCircularOrdenada
{
private:
P5Contenedor<T>* cabeza;
int numeroElementos;
public:
P5ListaCircularOrdenada (void);
~P5ListaCircularOrdenada (void);
void insertarElemento (const T & elemento);
void mostrarListaAscendente (ostream & s) const;
void mostrarListaDescendente (ostream & s) const;
int buscarElemento (const T & elemento) const;
void borrarElementoEn (int pos);
int getNumeroElementos (void) const;
friend ofstream & operator << (ofstream & out, P5ListaCircularOrdenada <T> & lista);
};
#endif
y te expongo la implementaci贸n de uno de los m茅todos de la segunda clase:
template <class T>
inline int P5ListaCircularOrdenada <T> :: getNumeroElementos (void) const
{
return numeroElementos;
}
Bueno pues mi problema es el siguiente, 驴Como se realiza la impelementaci贸n del c贸digo del operador << en el archivo P5ListaCircularEnlazada.cpp de la clase?
Muchas gracias de antemano.
Entiendo que quieres sobrecargar el operador << para guardar toda la lista de una vez.
Como los punteros no necesitas guardarlos ya que la proxima vez que se carge el archivo las direcciones seran diferentes, solo debes guardar los datos de manera ordenada para poder reconstruirlos en la sobrecarga del operador >>, por ultimo tener en cuenta que debes guardar en el archivo el tipo de dato ya que es una template y lo necesitaras para la reconstruccion.
Piensa en sobrecargar tambien los operadores para la clase contenedor eso te facilita el trabajo.
Espero que te sirva...
Como los punteros no necesitas guardarlos ya que la proxima vez que se carge el archivo las direcciones seran diferentes, solo debes guardar los datos de manera ordenada para poder reconstruirlos en la sobrecarga del operador >>, por ultimo tener en cuenta que debes guardar en el archivo el tipo de dato ya que es una template y lo necesitaras para la reconstruccion.
Piensa en sobrecargar tambien los operadores para la clase contenedor eso te facilita el trabajo.
Espero que te sirva...
