ndakota
17-01-2008, 11:14
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
#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;
};
stack.cpp
#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];
}
main.cpp
#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;
}
inoltre visto che sento dire da molti che tanti programmano procedurale anche se usano gli oggetti vorrei sapere se sono tra questi :p
stack.h
#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;
};
stack.cpp
#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];
}
main.cpp
#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;
}
inoltre visto che sento dire da molti che tanti programmano procedurale anche se usano gli oggetti vorrei sapere se sono tra questi :p