how to solve unexpected token error in alglibinternal.mqh library?

 

when i compile the "alglibinternal.mqh" library i confront following errors:

How should I change the code? why I receive this error?

'Copy' - unexpected token, probably type is missing?    alglibinternal.mqh    107    10
'Copy' - function already defined and has different type    alglibinternal.mqh    107    10

main library is here:

https://www.mql5.com/en/code/11077


class CSCodes
  {
public:
                     CSCodes(void);
                    ~CSCodes(void);

   static int        GetRDFSerializationCode(void)    { return(1); }
   static int        GetKDTreeSerializationCode(void) { return(2); }
   static int        GetMLPSerializationCode(void)    { return(3); }
  };
//+------------------------------------------------------------------+
//| Constructor without parameters                                   |
//+------------------------------------------------------------------+
CSCodes::CSCodes(void)
  {

  }
//+------------------------------------------------------------------+
//| Destructor                                                       |
//+------------------------------------------------------------------+
CSCodes::~CSCodes(void)
  {

  }
//+------------------------------------------------------------------+
//| Buffers for internal functions which need buffers:               |
//| * check for size of the buffer you want to use.                  |
//| * if buffer is too small, resize it; leave unchanged, if it is   |
//| larger than needed.                                              |
//| * use it.                                                        |
//| We can pass this structure to multiple functions;  after first   |
//| run through functions buffer sizes will be finally determined,   |
//| and  on  a next run no allocation will be required.              |
//+------------------------------------------------------------------+
class CApBuff
  {
public:
   //--- arrays
   int               m_ia0[];
   int               m_ia1[];
   int               m_ia2[];
   int               m_ia3[];
   double            m_ra0[];
   double            m_ra1[];
   double            m_ra2[];
   double            m_ra3[];
   //--- constructor, destructor
                     CApBuff(void);
                    ~CApBuff(void);
   //--- copy
   void Copy(CApBuff &obj);
  };
//+------------------------------------------------------------------+
//| Constructor without parameters                                   |
//+------------------------------------------------------------------+
CApBuff::CApBuff(void)
  {

  }
//+------------------------------------------------------------------+
//| Destructor                                                       |
//+------------------------------------------------------------------+
CApBuff::~CApBuff(void)
  {

  }
//+------------------------------------------------------------------+
//| Copy                                                             |
//+------------------------------------------------------------------+
CApBuff::Copy(CApBuff &obj)
  {
//--- copy arrays
   ArrayCopy(m_ia0,obj.m_ia0);
   ArrayCopy(m_ia1,obj.m_ia1);
   ArrayCopy(m_ia2,obj.m_ia2);
   ArrayCopy(m_ia3,obj.m_ia3);
   ArrayCopy(m_ra0,obj.m_ra0);
   ArrayCopy(m_ra1,obj.m_ra1);
   ArrayCopy(m_ra2,obj.m_ra2);
   ArrayCopy(m_ra3,obj.m_ra3);
  }
ALGLIB - Numerical Analysis Library
ALGLIB - Numerical Analysis Library
  • www.mql5.com
ALGLIB math function library (v. 3.5.0) ported to MQL4.
 
//+------------------------------------------------------------------+
//| Copy                                                             |
//+------------------------------------------------------------------+
void CApBuff::Copy(CApBuff &obj)
  {
//--- copy arrays
Reason: