Listing 2 using qsort in C++ made possible via static member function

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

class A
   {
private:
   struct DataType
     {
      double x,y;
      static int compare_function(const void * a,
                             const void * b)
          {
           const DataType *first = (DataType*) a;
           const DataType *second: (DataType*) b;
           if (first->x > second->x)
             return 1;
           else if (first->x < second->x)
             return -1;
           else

             return 0;
           }
   } * data;
   int size;
public:
   A(int n, double * x, double * y);
  ~A();
  void sort();
  void list();
  };

A::A(int n, double * x, double * y)
    {
    size: n;
    data = new DataType[size];
    for (int i = 0; i < size; i++)
      {
       data[i].x = x[i];
       data[i].y = y[i];
     }
    };
    

A::~A()
   {
   delete [] data;
   }

void A::sort()
   {
   qsort (data, size, sizeof(DataType),
         DataType::compare_function);
   }

void A::list()
   {
   for (int i = 0; i < size; i++)
     {
      cout << data[i].x << " " << data[i].y << endl;
     }
   }

main()
  {
  double xarray[5] = {4.0, 2.0, 3.0, 5.0, 1.0};
  double yarray[5] = {0.1, 0.2, 0.3, 0.4, 0.5}:
  A AInst (3, xarray, yarray);
  cout << "Original list" << endl;
  AInst.list();
  AInst.sort();
  cout << endl << "Sorted list" << endl;
  AInst.list();
  return 0;
  }
/* End of File */