- Creiamo un attributo statico che è la base ed un metodo satico per inserire
- Per primo riporterò il file header
// Classe lista: listc.h
#ifndef LISTC_H
#define LISTC_H
class list {
list *next; // private
static list *base; // Base della lista, statica
protected :
virtual int compare (const void *el) = 0; // Virtuale pura
list *Next () { return next; }; // Inline
list *ElSearch (const void *el); // Esegue la ricerca vera e propria
public :
list () {next = base; base = this;}; // Costruttore Inline - aggiunge alla lista
static list *Search (const void *el); // Metodo pubblico STATICO
};
#endif
- Ed il file C++ che implementa Search
// Classe lista: listc.cpp
#include "listc.h"
list *list::base = (list*) 0; // Definisco l'attributo statico dichiarato nella classe
list *list::ElSearch (const void *el)
{
if (compare (el)) // Chiama 'compare', virtuale
return Next () -> ElSearch (el); // Se non e' questa, cerca la prossima
else return this; // Se e' questa, ha finito
}
list *list::Search (const void *el)
{ // Questa funzione statica richiama la ElSearch sulla base (statica) della lista
return base -> ElSearch (el); // Se non e' questa, cerca la prossima
}
|