Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: angeljonh en 20 Septiembre 2017, 01:30 am



Título: Redefinition in listas
Publicado por: angeljonh en 20 Septiembre 2017, 01:30 am
Que tal tengo un error al compilar una lista me da error de redefinition

error: no 'E ListaEstatica<E>::Eliminar()' member function declared in class 'ListaEstatica<E>'
 E ListaEstatica<E>::Eliminar(void){
                                  ^

Adjunto codigo

Implementacion:
Código:
#ifndef LISTA_H
#define LISTA_H

template <typename E>
class Lista{
private:
    void operator=(const Lista&){};
    Lista(const Lista&){};
public:
    Lista(void){};
    virtual ~Lista(void){};
    virtual void Vaciar(void)=0;
    virtual void Insertar(const E&)=0;
    virtual void PonAlFinal(const E&)=0;
    virtual E eliminar(void)=0;
    virtual void IrAlInicio(void)=0;
    virtual void Anterior(void)=0;
    virtual void Siguiente(void)=0;
    virtual int Tamanio(void)const=0;
    virtual int PosicionActual(void)const=0;
    virtual void IrAPosicion(void)=0;
    virtual const Lista &ObtenerElemento(void)const=0;
};

#endif // LISTA_H

Implementacion estatica:
Código:
#include "lista.h"

template <typename E>
class ListaEstatica: public Lista<E>{
private:
    int TamanioMaximo;
    int TamanioActual;
    int PosActual;
    E *Arreglo;
public:
    ListaEstatica(int){};
    ~ListaEstatica(void){};
    void Vaciar(void);
    void Insertar(const E&);
    void PonAlFinal(const E&);
    E eliminar(void);
    void IrAlInicio(void);
    void Anterior(void);
    void Siguiente(void);
    int Tamanio(void)const;
    int PosicionActual(void)const;
    void IrAPosicion(void);
    const E &ObtenerElemento(void)const;};

//Constructor
template <typename E>
 ListaEstatica<E>::ListaEstatica(int Tamanio){
    TamanioMaximo=Tamanio;
    TamanioActual=PosActual=0;
    Arreglo=new E[Tamanio];}

//Destructor
template <typename E>
ListaEstatica<E>::~ListaEstatica(void){
    delete[]Arreglo;}

template<typename E>
void ListaEstatica<E>::Vaciar(void){
    delete[]Arreglo;
    TamanioActual=PosActual=0;
    Arreglo=new E[TamanioMaximo];}

template<typename E>
void ListaEstatica<E>::Insertar(const E& A){
    for(int i=TamanioMaximo;i>PosActual;i--){
        Arreglo[i]=Arreglo[i-1];}
        Arreglo[PosActual]=A;
        TamanioMaximo++;}

template<typename E>
void ListaEstatica<E>::PonAlFinal(const E& A){
    Arreglo[TamanioActual++]=A;}

template<typename E>
E ListaEstatica<E>::Eliminar(void){
    E A=Arreglo[PosActual];
    for(int i=PosActual;i<TamanioActual;i++){
        Arreglo[i]=Arreglo[i+1];}
    TamanioActual--;
    return A;
}

template<typename E>
void ListaEstatica<E>::IrAlInicio(void){
    for(int i=PosActual;i<TamanioActual;i--){
        Arreglo[PosActual];}}

AYUDA QUE PUEDO HACER


Título: Re: Redefinition in listas
Publicado por: class_OpenGL en 20 Septiembre 2017, 18:12 pm
En las cabeceras has puesto eliminar en vez de Eliminar. ¿Hago mal en asumir un copia-pega? :D


Título: Re: Redefinition in listas
Publicado por: angeljonh en 21 Septiembre 2017, 03:32 am
eso ya solo falta lo de redefinition