PDA

View Full Version : [C++] Lista generica


riemann_01
04-12-2006, 17:26
Ciao a tutti!
Sono alle prese con la scrittura di un contenitore generico. Di seguito riporto un estratto del codice e di un semplice programma di test.

// file: lista.h

#ifndef LISTA_H
#define LISTA_H

template <class T>
class lista {
public:
lista(const T& a);
// altre funzioni

void append(lista& L);
protected:
...
};

// definizioni

#endif

// file: main.cpp

#include "lista.h"

int main()
{
lista<char> lc;

lc.append('a');
}


La chiamata del metodo append non funziona. Il costruttore unario non dovrebbe garantire la conversione esplicita da char a Lista<char>?

Ho provato ad utilizzare una funzione del tipo

void append(const T& elem)
{
append(static_cast<Lista>(elem));
}

ma viene generato un segfault a causa di usa serie di chiamate ricorsive.

In che modo posso ovviare al problema? Devo per forza implementare qualcosa di specifico?
Grazie a tutti coloro che risponderanno!

riemann_01
05-12-2006, 18:04
Ancora una volta mi rispondo da solo, programmatori C++ dove siete finiti? :-O
Occorre definire una funzione del tipo:

template <class T>
void lista<T>::append(const T&)
{
lista<T> l(a);
append(l);
}


Ciao!