PDA

Visualizza la versione completa : [C++] Creazione della classe "Cella" per le liste


pietrol83
18-09-2011, 11:17
ciao a tutti, sto imparando a creare le strutture dati con il C++ e sto creando la classe cella per le liste con puntatori. in pratica la libreria relativa alla classe cella viene creata ma quando creo il main per testare se la classe stata creata con successo mi d errore. posto la classe cella e il main e l'errore che mi viene visualizzato:


classe cella



#ifndef _CELLAP_H
#define _CELLAP_H

template<class T>
class Cellap
{
public:
typedef T tipoelem;

Cellap();
~Cellap();

void scrivicella(tipoelem);
tipoelem leggicella();

void setprec(Cellap *);
Cellap *getprec();

void setsucc(Cellap *);
Cellap *getsucc();

bool operator==(Cellap);
private:
Cellap *precedente;
tipoelem elemento;
Cellap *successivo;
};

template<class T> Cellap<T>::Cellap()
{}

template<class T> Cellap<T>::~Cellap()
{}

template<class T>void Cellap<T>::scrivicella(tipoelem element)
{
elemento = element;
}

template<class T> tipoelem Cellap<T>::leggicella()
{
return elemento;
}

void template>class T> Cellap<T>::setprec(Cellap *prec)
{
precedente = prec;
}

Cellap *template<class T> Cellap<T>::getprec()
{
return(precedente);
}

void template<class T> Cellap<T>::setsucc(Cellap *succ)
{
successivo = succ;
}

Cellap *template<class T> Cellap<T>::getsucc()
{
return(successivo);
}

bool template<class T> Cellap<T>::operator==(Cellap cella)
{
return(this.elemento == cella.elemento);
}

#endif




main



#include "Cellap.h"
#include <iostream>

using namespace std;

int main()
{
Cellap<int> cilla;
tipoelem el;

cout << "inserire l'elemento: ";
cin >> el;

cilla.scrivicella(el);

cout << "\nl'elemento inserito : " << cilla.leggicella();

system("pause");
return 0;
}


quando mado in compilazione il main, mi da l'errore alla linea 40:
expected constructor, destructor, or type conversion before "Cellap"

dove ho sbagliato???

pietrol83
18-09-2011, 17:50
ho deciso di ricreare la classe cella per poterla utilizzare con la struttura dati lista realizzata con puntatori. ho deciso di crearla un metodo alla volta e controllare se il metodo funziona. ho creato il costruttore ma quando lo testo, con un programma main, va in crash. dove ho sbagliato? vi prego aiutatemi!!!

posto i codici:

cella


#ifndef _CELLAP_H
#define _CELLAP_H

template<class T>
class Cellap
{
public:
typedef T tipoelem;

Cellap();
private:
Cellap *precedente;
tipoelem elemento;
Cellap *successivo;
};

#endif

template<class T> Cellap<T>::Cellap()
{
new(Cellap);
}


main


#include "Cellap.h"
#include <iostream>

using namespace std;

int main()
{
Cellap<int> cella;

system("pause");
return 0;
}

clynamen
18-09-2011, 17:56
Non un po' troppo ricorsivo?

template<class T> Cellap<T>::Cellap()
{
new(Cellap);
}

pietrol83
18-09-2011, 18:43
e come avrei dovuto fare?

clynamen
18-09-2011, 20:20
Dipende da quello che devi fare nel costruttore.

new chiama il costruttore di una classe dopo aver allocato memoria, qui il costruttore viene chiamato all'infinito. Prova a eliminare quella riga.

Loading