|
|||||||
|
|
|
![]() |
|
|
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: 11794
|
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: 08:30.




















