Sintassi Template C++

di il
1 risposte

Sintassi Template C++

Salve, nell'implementare la classe lista sto riscontrando l'errore "expected initializer before '<' token". il codice è il seguente

MAIN.CPP
#include <iostream>
#include "lista.h"

using namespace std;

int main()
{
    Lista <int> L;
    L.crea();
    return 0;
}
LISTA.H
#ifndef LISTA_H_INCLUDED
#define LISTA_H_INCLUDED
#include "cellalista.h"
#include <iostream>
using namespace std;

template <class T> class Lista{

public:

typedef T Tipoelem;

    /** OPERATORI **/
    void crea();
    bool vuota();

    /** FUNZIONI DI SERVIZIO **/
    void stampa();
    void epurazione();

};

#endif // LISTA_H_INCLUDED

template <class T> void Lista <T>::crea(){
    cout << "Prova" << endl;
}
CELLALISTA.H
#ifndef CELLALISTA_H_INCLUDED
#define CELLALISTA_H_INCLUDED
#include "lista.h"

typedef int Tipoelem;

template <class T> class CellaLista{

public:

    void setElemento(Tipoelem);
    Tipoelem getElemento();
    void setNext(CellaLista*);
    CellaLista* getNext();

private:

    Tipoelem valore;
    CellaLista* next; // puntatore a oggetto Cella

};

#endif // CELLALISTA_H_INCLUDED
quando provo a compilare mi dice che alla riga dove implemento la funzione "crea" manca qualcosa prima della parentesi uncinata aperta ' < ', non capisco il perché
questo avviene solo quando aggiungo anche il secondo header file cellalista.h, se non uso quello (che però mi serve) mi dà quell'errore

1 Risposte

  • Re: Sintassi Template C++

    L'errore di compilazione credo sia dovuto al fatto che in lista.h l'istruzione #endif deve trovarsi alla fine del file, ma il punto è un altro... sei sicuro di aver capito cosa sono e come funzionano i template? Per esempio in cellalista.h a cosa serve quel typedef?!
Devi accedere o registrarti per scrivere nel forum
1 risposte