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!
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!