Uso di funzioni e membri static

  • 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
    }

© Ing. Stefano Salvi - All rights reserved