va bene!!!
definzione e implementazione classe base :
codice:
#ifndef DICHIARAZIONE_H
#define DICHIARAZIONE_H
#include <string>
using namespace std;
enum TIPO { INT, DOUBLE, FLOAT, LONG };
class Dichiarazione{
private:
string nome; // nome dell 'oggetto
static int attuale_registro; // posizione attuale del registro
int registro;
int linea_dichiarazione; // posizione della dichiarazione;
protected:
bool set_nome ( const string&);
bool set_linea_dichiarazione(int); //
bool set_registro(int);
int get_registro_attuale(void) const;
static bool set_registro_attuale(int);
public:
string get_nome (void) const;
int get_linea_dichiarazione(void) const ;
int get_registro(void) const;
virtual int inserisci_in_memmoria(void) = 0;
};
#endif
file dichiarazione.cpp:
codice:
#include "dichiarazione.h"
int Dichiarazione::attuale_registro = 0; // setto la variabile static a zero
inline bool Dichiarazione::set_nome( const string& stringa) {
nome = stringa;
return true;
}
inline string Dichiarazione::get_nome(void) const {
return nome;
}
inline bool Dichiarazione::set_linea_dichiarazione( int numero_linea) {
if ( numero_linea<= 0) return false;
else {
linea_dichiarazione = numero_linea;
return true;
}
}
inline int Dichiarazione::get_linea_dichiarazione(void) const {
return linea_dichiarazione;
}
inline bool Dichiarazione::set_registro( int valore) {
if ( valore < 0) return false;
registro = valore;
return true;
}
inline int Dichiarazione::get_registro (void) const {
return registro;
}
inline int Dichiarazione::get_registro_attuale(void) const {
return attuale_registro;
}
inline bool Dichiarazione::set_registro_attuale(int valore) {
if ( valore < 0) return false;
else
attuale_registro = valore;
return true;
}
classe derivata :
codice:
#include "dichiarazione.h"
#ifndef IDENTIFICATORE_H
#define IDENTIFICATORE_H
class Identificatore : public Dichiarazione {
private:
TIPO tipo; // tipo variabile;
public:
bool set_nome ( const string &); // setta il nome dell'oggetto
bool set_linea_dichiarazione( int ); // setta la linea
bool set_tipo ( TIPO);
TIPO get_tipo(void) const;
virtual int inserisci_in_memmoria(void);
};
#endif
identificatore.cpp
codice:
#include "Identificatore.h"
inline bool Identificatore::set_tipo ( TIPO t){ /
tipo = t;
return true;
}
inline TIPO Identificatore::get_tipo(void) const {
return tipo;
}
inline bool Identificatore::set_nome ( const string& stringa) {
return Dichiarazione::set_nome(stringa);
}
inline bool Identificatore::set_linea_dichiarazione( int riga) {
return Dichiarazione::set_linea_dichiarazione(riga);
}
int Identificatore::inserisci_in_memmoria(void){
set_registro_attuale(4);
}
vi puo essere d'aiuto???