|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
|
[c++] template. dove sbaglio?
dovevo fare una classe stack e funzionava, successivamente dovevo renderla template, non ho fatto altro che aggiungere la "sintassi" per i template ma mi da 4 errori del tipo "simbolo esterno qualcosa non risolto".. dove sbaglio?
stack.h Codice:
#pragma once #define DIM 25 template <typename T> class stack { public: stack(); ~stack(); void push(T data); T pop(); private: T pila[DIM]; int stackPointer; }; Codice:
#include "stack.h" template <typename T> stack<T>::stack() { stackPointer = 0; } template <typename T> stack<T>::~stack() { } template <typename T> void stack<T>::push(T data) { if(stackPointer > DIM - 1) throw "stack pieno."; else pila[stackPointer++] = data; } template <typename T> T stack<T>::pop() { if(stackPointer == 0) throw "stack vuoto."; else return pila[--stackPointer]; } Codice:
#include "stack.h" #include <iostream> using namespace std; int main() { stack<char> s; s.push('c'); s.push('i'); s.push('a'); s.push('o'); cout << s.pop() << endl; cout << s.pop() << endl; cout << s.pop() << endl; cout << s.pop() << endl; cin.get(); return 0; } ![]() |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Nov 2003
Messaggi: 980
|
qui funziona perfettamente... mingw 3.4.5...
PS: forse ti conviene cambiare nome alla classe PS2: forse è il caso di postare gli errori |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11782
|
Devi implementare i metodi della classe template nel file hpp perche' il compilatore ha bisogno di tutta la definizione della classe al momento dell'instanziazione del template.
Non puoi usare i cpp. O meglio, nello standard non puoi, alcuni compilatori provano a fare i furbini. Meglio ancora, usi la classe std::stack di STL.
__________________
"We in the game industry are lucky enough to be able to create our visions" @ NVIDIA |
![]() |
![]() |
![]() |
#4 | |
Senior Member
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
|
Quote:
![]() |
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 16:01.