Oppure

Loading
23/08/09 20:54
puffin
non riesco ad eseguire questo semplice programma includendo nel main l'heder file, mentre se includo il .cpp funziona, help me

funzione main
#include <cstdlib>
#include <iostream>
#include "nodo.h"

using namespace std;

int main(int argc, char *argv[])
{
    Nodo <int> p;
    p.stampa(5);
    system("PAUSE");
    return EXIT_SUCCESS;
}





file node.h

#ifndef _nodo
#define _nodo

template <class T> class Nodo 
{
public:
Nodo();
void stampa(T);                
                 
private:         
Nodo* netx;
Nodo* previous;
T data;         
       
};

 
          
#endif        



file .cpp che contiene le definizioni della classe template
 

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

using namespace std;

  template <class T> Nodo <T>::Nodo(){
      
         
         }
      
template <class T> void Nodo <T>::stampa(T p){
         
          cout<<"hello world "<<p<<"\n";
         
         
         
         }
 






output del compilatore
  [Linker error] undefined reference to `Nodo<int>::Nodo()' 
    [Linker error] undefined reference to `Nodo<int>::stampa(int)'  
  ld returned 1 exit status 
 C:\Users\xxx\Desktop\c++\lista funzionantge\Makefile.win [Build Error]  [Progetto1.exe] Error 1 


Ultima modifica effettuata da puffin 23/08/09 20:56
aaa
24/08/09 0:53
TheKaneB
Devi inserire il file cpp che istanzia il template tra i file compilabili. Evidentemente il tuo compilatore lo sta scartando, quindi poi il linker non trova i symbols Nodo() e stampa(int).

Che IDE stai usando? di solito basta settare un flag o trascinare il file dentro al progetto per inserirlo nella lista dei "to be compiled"...
aaa
24/08/09 7:43
puffin
dev-c++

e tutti e 3 i file fanno parte del progetto
Ultima modifica effettuata da puffin 24/08/09 8:20
aaa
24/08/09 8:20
puffin
ho risolto con il metodo della compilazione separata
Ultima modifica effettuata da puffin 24/08/09 9:25
aaa