0

The following code gives me an error: double free or corruption (fasttop): I'm new to c++ overloaded operators so there might be a lot of syntax error.whats the problem here,is it in the functions declaration or the implementation ,so what details or problems or ...,I don't know where here fail ,How to solve or opinion ?Thanks.

Vector::Vector()
{
    currentIndex;
    arrSize = 3;
    arr = new float[arrSize];
}

Vector::Vector(int size)
{
   arrSize = size;
   arr = new float[arrSize];
}


Vector::~Vector()
{
   delete [] arr;
}

void Vector::AddNumbertoArr(float number)
{
   for(int i = 0; i < arrSize; i++)
   {
      arr[i] = number;
   }
 }

int Vector::getSize()
{
    return arrSize;
}

float Vector::length()
{
   float sum=0;
   for(int i = 0; i < arrSize; i++)
   {
       sum+=arr[i]*arr[i];
   }
   return sqrt(sum);
}

Vector Vector::normalize()
{
   float total;
   for(int i = 0; i < arrSize; i++)
   {
      total = length();
      arr[i] /= total;
   }
   return Vector(3);
}

Vector & Vector::operator+(Vector v)
{
    if(arrSize == v.arrSize)
    {
        for(int i = 0; i < arrSize; i++)
        {
            arr[i] += v.arr[i];
        }
        return *this;
    }
    else
    {
        cout << "Error: size not match";
    }
 }

 Vector & Vector::operator=(Vector v)
 {
      if(arrSize == v.arrSize)
      {
         for(int i = 0; i < arrSize; i++)
         {
             arr[i] = v.arr[i];
         }
         return *this;
     }
     else
     {
         cout << "Error: size not match";
     }
 }

 Vector & Vector::operator-(Vector v)
 {
     if(arrSize == v.arrSize)
     {
         Vector currentIndex(arrSize);
         for(int i = 0; i < arrSize; i++)
         {
            arr[i] -= v.arr[i];
         }
         return *this;
     }
     else
     {
         cout << "Error: size not match";
     }
 }


 float & Vector::operator*(Vector v)
 {
      float count = 0; 
      if(arrSize == v.arrSize)
      {
          for(int i = 0; i < arrSize; i++)
          {
              count += arr[i] * v.arr[i];
          }
          return count;
      }
      else
      {
          cout << "Error: size not match";
      }
 }

 ifstream & operator>>(ifstream & in, Vector &v)
 {
    for(int i = 0; i < v.arrSize; i++)
    {
        in >> v.arr[i];
    }
    return in;
 }

 ostream & operator<<(ostream & out, const Vector & v)
 {
     for(int i = 0; i < v.arrSize; i++)
     {
        out << v.arr[i];
     }
     return out;
 }

0 Answers0