- Utilizzeremo una struct invece di una class, vedremo poi perchè
- Questa è una classe astratta
- Per primo riporterò il file header
// Classe lista: lista.h
#ifndef LISTA_H
#define LISTA_H
struct lista {
lista *next; // Puntatore al prossimo elemento della lista
lista () { next = (lista *) 0; }; // Costruttore di default - inline
lista (lista *n) { next = n; }; // Costruttore con parametro - inline
lista *Next () { return next; }; // Metodo inline
lista *Search (const void *el); // Metodo non inline
virtual int compare (const void *el) = 0; // Metodo Virtuale Puro
};
#endif
- Ed il file C che implementa Search
// Classe lista: lista.cc
#include "lista.h" // Include la definizione della classe
struct lista *lista::Search (const void *el)
{
if (compare (el)) { // Se il confronto fallisce
if (Next () == 0) // Se non ho prossimo elemento
return 0; // Ritorno NULL - ricerca fallita
else return Next () -> Search (el); // Chiamo ricorsivamente la ricarca
}
else return this; // Ho trovato, ritorno puntatore a me
}
|