Newsgroup: it.comp.lang.c++
Titolo: Problema con pila realizzata con classe

Ciao ragazzi, sono Giuseppe e sto preparando Fondamenti di Informatica 3. Per ora sono alla 6a lezione e ieri ho provato ad implementare la pila statica realizzata con classe che il docente ha illustrato nella stessa lezione. E' andato tutto ok tranne l'ultima parte. In pratica, quando mando in esecuzione il file del programma utente (contenente Pila.h , la specifica della classe) il compilatore non riesce a trovare l'implementazione delle funzioni membro (che dovrebbe trovare nel file oggetto della classe, ragion per cui ho posizionato quest'ultimo file nella stessa cartella del sorgente del programma utente, ma continua a ripresentarsi lo stesso problema). Il tutto invece funziona normalmente se includo nel programma utente, l'implementazione della classe pila (ma questa dovrebbe rimanere nascosta!!) Come posso risolvere il problema?
P.S. L'ambiente di lavoro che uso è il Borland C++ v5.02
Grazie!
************************************************** *********************************
// File Pila.h
#ifndef PILA_H_
#define PILA_H_
#define N 100
// - - - Definizioni di tipi - - - -
typedef int E;
typedef int boolean;
// - - - - Definizione classe Pila - - - -
class Pila
{
public:
Pila(){t=0;}; // Costruttore
void Push(const E e);
void Pop(E &e);
void Top(E &e);
boolean Empty();
boolean Full();
private:
int t;
E p[N];
};
#endif
************************************************** *********************************
// File Pila.cpp
#include "Pila.h"
void Pila::Push(const E e)
{
p[t] = e;
t++;
};
void Pila::Pop(E &e)
{
t--;
e = p[t];
};
void Pila::Top(E &e)
{
e = p[t-1];
};
boolean Pila::Empty()
{
return (t == 0);
};
boolean Pila::Full()
{
return (t == N);
};
************************************************** *********************************
// File programmautente.cpp
#include <iostream.h>
#include <stdio.h>
#include <conio.h>
#include "Pila.h"
Pila stack;
E e;
int scelta;
void main()
{
do
{
clrscr();
cout<<"\n\n\n\n * * * * Gestione di una pila tramite classe * * * *";
cout<<"\n\n 1) Inserisci elemento nella pila";
cout<<"\n 2) Togli elemento dalla pila";
cout<<"\n 3) Visualizza elemento di testa";
cout<<"\n 4) Esci";
cout<<"\n\n\n\nScegli: ";
cin>>scelta;
switch (scelta)
{
case 1:
{
cout<<"\nDigita elemento da inserire: ";
cin>>e;
if (!stack.Full())
{
stack.Push(e);
cout<<"\nElemento inserito con successo!";
}
else
cout<<"\n\aLa pila e' piena!";
getchar();
break;
}
case 2:
{
if (!stack.Empty())
{
stack.Pop(e);
cout<<"\nElemento tolto dalla pila con successo!";
}
else
cout<<"\n\aLa pila e' gia vuota!";
getchar();
break;
}
case 3:
{
if (!stack.Empty())
{
stack.Top(e);
cout<<"\nL'elemento di testa della pila e': "<<e;
}
else
cout<<"\n\aLa pila e' vuota!";
getchar();
break;
}
case 4:
break;
}
}
while (scelta >= 1 && scelta <= 3);
}
-- 
the_knight 
------------------------------------------------------------------------
View this thread: 
http://www.itsistemi.net/viewtopic-729901.html
Inviato via 
http://www.itsistemi.net


Devi creare un progetto (lo crei vuoto e per console) e poi ci
inserisci i due file .cpp

Grazie per la risposta! Ti volevo pero chiedere una cosa: secondo quello che si è detto nella lezione, nella programmazione a oggetti, colui che crea la classe dovrebbe distribuire solo la specifica della classe (il file classe.h) e il file oggetto della classe (classe.o oppure classe.obj) che il compilatore produce compilando l'implementazione della classe (classe.cpp) Quindi l'utente non dovrebbe poter visionare direttamente quest'ultimo file (in quanto per ipotesi si vuole lasciare nascosta all'utente l'implementazione della classe). Non mi è chiara questa cosa.
