This is a pure virtual class where we define the core cell to hold a complex element.
class Complex_CELL_CORE{
friend class Complex_POLY_CORE;
friend istream& operator>>(istream& in, Complex_CELL_CORE& A)
{A.grab(in); return(in);};
friend istream& operator>>(istream& in, Complex_CELL_CORE* A)
{A->grab(in); return(in);};
friend ostream& operator<<(ostream& out,const Complex_CELL_CORE& A)
{A.print(out); return(out);};
friend ostream& operator<<(ostream& out,const Complex_CELL_CORE* A)
{A->print(out); return(out);};
public:
virtual ~Complex_CELL_CORE(){};
void load_element(Complex x){element = x;};
virtual istream& grab(istream& in) = 0;
virtual ostream& print(ostream& out) const = 0;
protected:
Complex element;
};