insieme.h
codice:
#ifndef insieme_h
#define insieme_h

#include<iostream>
#include<stdlib.h>

using namespace std;

template<class tipoelem>
class insieme
{
   public:
      virtual void creainsieme() = 0;
      virtual bool insiemevuoto() = 0;
      virtual bool appartiene(tipoelem) = 0;
      virtual void inserisci(tipoelem) = 0;
      virtual void cancella(tipoelem) = 0;
      //virtual void unione(insieme<tipoelem> *, insieme<tipoelem> *) = 0;
      //virtual void intersezione(insieme<tipoelem> *, insieme<tipoelem> *) = 0;
      //virtual void differenza(insieme<tipoelem> *, insieme<tipoelem> *) = 0;
      
      void test();
};

#endif

template<class tipoelem>
void insieme<tipoelem>::test()
{
   cout << "                  ***test del metodo CREAINSIEME***\n\n";
   cout << "il metodo CREAINSIEME crea un insieme privo di elementi. per provare il metodo\n";
   cout << "basta utilizzare il metodo INSIEMEVUOTO.\n\n";
   cout << "   insiemevuoto() = " << this->insiemevuoto() << "\n\n";
   system("pause");
   system("cls");
   
   cout << "                  ***test del metodo INSIEMEVUOTO***\n\n";
   cout << "il metodo INSIEMEVUOTO testa se l'insieme e' privo o meno di elementi.\n\n";
   cout << "   test del metodo su insieme privo di elementi:\n";
   cout << "      insiemevuoto() = " << this->insiemevuoto() << "\n";
   cout << "   test del metodo su insieme con almeno un elemento:\n";
   cout << "      inserimento di un valore nell'insieme: a = ";
   tipoelem a;
   cin >> a;
   this->inserisci(a);
   cout << "      insiemevuoto() = " << this->insiemevuoto() << "\n\n";
   system("pause");
   system("cls");
   
   cout << "                  ***test del metodo APPARTIENE***\n\n";
   cout << "il metodo APPARTIENE testa se il valore fornito come argomento e' presente\n";
   cout << "o meno tra i valori dell'insieme.\n\n";
   cout << "   test con esito positivo:\n";
   cout << "      appartiene(a) = " << this->appartiene(a) << "\n";
   cout << "   test con esito negativo:\n";
   cout << "      b = ";
   tipoelem b;
   cin >> b;
   cout << "      appartiene(b) = " << this->appartiene(b) << "\n\n";
   system("pause");
   system("cls");
   
   cout << "i metodi UNIONE, INTERSEZIONE e DIFFERENZA non vengono testati in quanto\n";
   cout << "essendo questa una class virtuale, non è possibile instanziare oggetti\n";
   cout << "insieme, ma bisognerebbe fornire i puntatori a insieme da un main.\n\n";
   system("pause");
}
questa è la classe base (virtuale)