// cvector.cpp - Definición de la clase CVector
#include <iostream>
#include "cvector.h"
using namespace std;

// Crear una matriz con ne elementos
CVector::CVector(int ne)
{
  if (ne < 1) ne = 10;
  nElementos = ne;
  vector = asignarMem(nElementos);
}

// Constructor copia
CVector::CVector(const CVector &v)
{
  vector = 0;
  *this = v;
}

// Operador de asignación
CVector& CVector::operator=(const CVector &v)
{
  delete [] vector;
  nElementos = v.nElementos;
  vector = asignarMem(nElementos);
  // Copiar el objeto v
  for (int i = 0; i < nElementos; i++)
    vector[i] = v.vector[i];
  return *this;
}

// Otros métodos
CVector::~CVector() // destructor
{
  cout << "destructor CVector\n";
  delete [] vector;
}

double& CVector::operator[](int i) const
{
  return vector[i];
}

int CVector::longitud() const
{
  return nElementos;
}

double *CVector::asignarMem(int nElems)
{
  try
  {
    double *p = new double[nElems];
    return p;
  }
  catch(bad_alloc e)
  {
    cout << "Insuficiente espacio de memoria\n";
    exit(-1);
  }
}

