Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2010
    Messaggi
    211

    [C++] creazione della classe cella per le liste

    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

    codice:
    #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

    codice:
    #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???

  2. #2
    Utente di HTML.it
    Registrato dal
    Jan 2010
    Messaggi
    211

    [C++] problema con le classi

    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
    codice:
    #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
    codice:
    #include "Cellap.h"
    #include <iostream>
    
    using namespace std;
    
    int main()
    {
        Cellap<int> cella;
        
        system("pause");
        return 0;
    }

  3. #3
    Non è un po' troppo ricorsivo?
    codice:
    template<class T> Cellap<T>::Cellap()
    {
       new(Cellap);
    }

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2010
    Messaggi
    211
    e come avrei dovuto fare?

  5. #5
    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.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.