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

    C++ pila con cursori

    ciao a tutti, ho creato la struttura dati pila con cursori, nel testare se i metodi sono stati creati correttamente, ricevo un errore dopo la compilazione. i codici della struttura e del relativo test sono i seguenti:

    pilac.h
    codice:
    #ifndef pilac_h
    #define pilac_h
    
    #include<iostream>
    #include<stdlib.h>
    
    #define MAXSPAZIO 1000
    
    using namespace std:
    
    template<class tipoelem>
    class pilac
    {
       public:
          pilac();
          
          void creapila();
          bool pilavuota();
          tipoelem leggipila();
          void inpila(tipoelem);
          void fuoripila();
       private:
          typedef struct Nodo
          {
             int precedente;
             tipoelem elemento;
          } nodoc;
          
          static nodo spazio[MAXSPAZIO];
          static int testalibera;
          static int lungpilalibera;
          int testa;
          int lungpila;
          static nodo *inizializzalibera();
          void sposta(int *, int *);
    };
    
    #endif
    
    template<class tipoelem>
    typename pilac<tipoelem>::nodo pilac<tipoelem>::spazio = inizializzalibera();
    
    template<class tipoelem>
    int pilac<tipoelem>::testalibera = MAXSPAZIO - 1;
    
    template<class tipoelem>
    int pilac<tipoelem>::lungpilalibera = MAXSPAZIO;
    
    template<class tipoelem>
    typename pilac<tipoelem>::nodo *pilac<tipoelem>::inizializzalibera()
    {
       for(int i = 0; i < MAXSPAZIO; i++)
       {
          spazio[i].prec = i - 1;
          spazio[i].elemento = new tipoelem;
       }
       return spazio;
    }
    
    template<class tipoelem>
    void pilac<tipoelem>::sposta(int *pos1, int *pos2)
    {
       int temp = *pos1;
       *pos1 = spazio[*pos1].precedente;
       spazio[temp].precedente = *pos2;
       *pos2 = temp;
    }
    
    template<class tipoelem>
    pilac<tipoelem>::pilac()
    {
       this->creapila();
    }
    
    template<class tipoelem>
    void pilac<tipoelem>::creapila()
    {
       testa = testalibera;
       lungpila = 0;
    }
    
    template<class tipoelem>
    bool pilac<tipoelem>::pilavuota()
    {
       return(lungpila == 0)
    }
    
    template<class tipoelem>
    tipoelem pilac<tipoelem>::leggipila();
    {
       return(spazio[testa].elemento);
    }
    
    template<class tipoelem>
    void pilac<tipoelem>::inpila(tipoelem elem)
    {
       if(lungpilalibera != 0)
       {
          sposta(&testalibera, &testa);
          spazio[testa].elemento = elem;
          lungpila++;
          lungpilalibera--;
       }
       else
          cerr << "spazio non sufficiente.\n\n";
    }
    
    template<class tipoelem>
    void pilac<tipoelem>::fuoripila()
    {
       if(lungpila != 0)
       {
          sposta(&testa, &testalibera);
          spazio[testalibera].elemento = testalibera;
          lungpila--;
          lungpilalibera++;
       }
       else
          cerr << "pila vuota.\n\n";
    }
    testcodac.cpp
    codice:
    #include "pilac.h"
    #include<iostream>
    #include<stdlib.h>
    
    using namespace std;
    
    int main()
    {
       pilac<int> stack;
       
       system("pause");
       return 0;
    }
    in pratica il test è per vedere se funziona il costruttore (è da completare): l'errore che mi viene visualizzato è il seguente:

    [Linker error] undefined reference to `WinMain@16'

    cosa devo fare???

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Non so quale IDE/compilatore usi ma si tratta del tipo di progetto che hai scelto ... devi usare un

    Progetto Console
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    E questo

    using namespace std:

    deve essere

    using namespace std;

    (ma forse è stato un problema di copia-incolla)
    No MP tecnici (non rispondo nemmeno!), usa il forum.

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.