I am trying to create a Mex-file from a C++ code source file to use it with Matlab. I have compiling errors due to the vector class definition handling that I do not understand very well. I would like to know how I should modify the code to work. Below I show the relevant code's parts that I have divided into four sections for clarifying more (Computational code, MexFunction code, Vector class definition and compiling errors):
+ Computational routine's code:
    `#include "mex.h"`
    `#include "SAT_VecMat.h"`
     void AccelSolrad (const Vector& r, const Vector& r_Sun, double Area,
    double mass,double CR, double P0, double AU,const Vector& Accel )
+ mexFunction's code:
       ...
                const Vector& r_sat(3);  
                const Vector& r_sol(3);  
                const Vector& outMatrix(3);   
        ...
        r_sat = mxGetPr(prhs[0]);
        r_sol = mxGetPr(prhs[1]);
        plhs[0] = mxCreateDoubleMatrix(1,3,mxREAL);
        outMatrix = mxGetPr(plhs[0]);
+ Vector class definition included in SAT_VecMat.h:
     class Vector
        {
          public:
            friend class Matrix;
            // Constructors
            Vector ();                              // Vector without elements
            Vector (int Size);                      // Nullvector of specified size 
            Vector (const Vector& V);               // Vector copy
            Vector (const double* p, int N);        // Array copy
            Vector (double x, double y, double z);  // 3dim-Vector
            Vector (double x, double y, double z,   // 6dim-Vector
                    double X, double Y, double Z);  
            // Destructor
            ~Vector();
            // Size
            int size() const { return n; };
            Vector& resize(int Size);
            // Assignment
            Vector& operator=(const double value);
            Vector& operator=(const Vector& V);
            // Component access (Fortran notation)
            double  operator () (int i) const { return v[i]; };
            double& operator () (int i)       { return v[i]; };
            Vector slice (int first, int last) const;
        ...
+ Compiling errors:
      >> mex AccelSolrad.cpp
      AccelSolrad.cpp 
      c:\program files\matlab\r2009b\extern\include\matrix.h(332) : error C2371: 'char16_t' : redefinition; different basic types
      C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE\yvals.h(576) : see declaration of 'char16_t'
AccelSolrad.cpp(14) : error C2678: binary '=' : no operator found which takes a left-hand operand of type 'const Vector' (or there is no acceptable conversion) d:\po\ejemplos\SAT_VecMat.h(69): could be 'Vector &Vector::operator =(const double)' d:\po\ejemplos\SAT_VecMat.h(70): or 'Vector &Vector::operator =(const Vector &)' while trying to match the argument list '(const Vector, Vector)'
AccelSolrad.cpp(18) : error C2678: binary '=' : no operator found which takes a left-hand operand of type 'const Vector' (or there is no acceptable conversion) d:\po\ejemplos\SAT_VecMat.h(69): could be 'Vector &Vector::operator =(const double)' d:\po\ejemplos\SAT_VecMat.h(70): or 'Vector &Vector::operator =(const Vector &)' while trying to match the argument list '(const Vector, Vector)'
AccelSolrad.cpp(94) : error C2678: binary '=' : no operator found which takes a left-hand operand of type 'const Vector' (or there is no acceptable conversion) d:\po\ejemplos\SAT_VecMat.h(69): could be 'Vector &Vector::operator =(const double)' d:\po\ejemplos\SAT_VecMat.h(70): or 'Vector &Vector::operator =(const Vector &)' while trying to match the argument list '(const Vector, double *)'
AccelSolrad.cpp(96) : error C2678: binary '=' : no operator found which takes a left-hand operand of type 'const Vector' (or there is no acceptable conversion) d:\po\ejemplos\SAT_VecMat.h(69): could be 'Vector &Vector::operator =(const double)' d:\po\ejemplos\SAT_VecMat.h(70): or 'Vector &Vector::operator =(const Vector &)' while trying to match the argument list '(const Vector, double *)'
AccelSolrad.cpp(112) : error C2678: binary '=' : no operator found which takes a left-hand operand of type 'const Vector' (or there is no acceptable conversion) d:\po\ejemplos\SAT_VecMat.h(69): could be 'Vector &Vector::operator =(const double)' d:\po\ejemplos\SAT_VecMat.h(70): or 'Vector &Vector::operator =(const Vector &)' while trying to match the argument list '(const Vector, double *)'
C:\PROGRA~1\MATLAB\R2009B\BIN\MEX.PL: Error: Compile of 'AccelSolrad.cpp' failed.