Uso di funzioni e membri static

  • Definiamo ora una classe derivata slist, lista di stringhe. Prima l'header file:
    // Classe slist : slistc.h
    #ifndef SLISTC_H
    #define SLISTC_H
    #ifndef LISTC_H
    #include "listc.h"
    #endif
    class slist : public list {
        char *str;	// Private
      protected :
        virtual int compare (const void *el);    // Definiro' la virtuale pura
      public :
        slist (char  const *s);                  // Costruttore
        ~slist ();                               // Distruttore
        char const * string () { return str; };  // Interfaccia inline
    };
    #endif
  • Quindi il file con le definizioni dei metodi
    // Classe slist : slist.cc
    #include <string.h>
    #include "slistc.h" // include anche list.h
    slist::slist (char const *s) // non chiamo piu' il costruttore con parametri di list 
    {
      str = new char [strlen (s) + 1]; // Alloco lo spazio per la stringa
      if (str)                         // Se ho lo spazio
        strcpy (str,s);                // Ci copio dentro il valore
    }
    int slist::compare (const void *el)
    {
      return strcmp (str,(char *) el); // definizione del metodo virtuale puro del padre
    }
    slist::~slist ()
    {
      if (str)       // Se ho allocato la stringa
        delete str;  // Libero lo spazio usato
    }
  • Per finire, il file con un piccolo 'main' (un piccolo Makefile)
    // Programma : main.cc
    #include <stdio.h>
    #include "slistc.h" // include anche list.h
    /* Array degli elementi da costruire */
    char *strs [] = { "uno", "due", "tre" , ""};
    void main (){
    	for (int i = 0; strs [i][0]; i ++)	// Ciclo di creazione degli elementi
    		new slist (strs [i]);	// Creo il singolo elemento
    	printf ("%s\n", ((slist *) slist::Search ("due")) -> string ());	// Ricerca
    }

© Ing. Stefano Salvi - All rights reserved