Mega Code Archive

 
Categories / C++ Tutorial / Data Types
 

Vector with raised exceptions

#include <iostream> #include <assert.h>  #include <stdlib.h> using namespace std; class vect { public:    explicit vect(int n);    ~vect() { delete []p; }    int  ub() const { return (size - 1); }    vect& operator=(const vect& v);      void print() const;    int&  operator[](int i) ;            vect operator+(const vect& v); private:    int*  p;    int   size; }; vect::vect(int n): size(n) {    if (n < 1)        throw (n);    p = new int[n];    if (p == 0)       throw ("FREE STORE EXHAUSTED"); } int& vect::operator[](int i) {    assert(i >= 0 && i < size);    return p[i]; } vect& vect::operator=(const vect& v) {    int s = (size < v.size) ? size : v.size;    if (v.size != size)       cerr << "copying different size arrays "            << size << " and " << v.size << endl;    for (int i = 0; i < s; ++i)       p[i] = v.p[i];    return (*this); } void vect::print() const {    for (int i = 0; i <= (size-1); ++i)       cout << p[i] << "\t";    cout << endl; } vect vect::operator+(const vect& v) {    assert(size == v.size);    vect  sum(size);    for (int i = 0; i < size; ++i)       sum.p[i] = p[i] + v.p[i];    return sum; } void g (int m) {   try {       vect  a(m), b(m);   }   catch(int m)   {      cerr << "SIZE ERROR " << m << endl;      g(10);         }   catch(const char* error)   {      cerr << error << endl;      abort();   } } int main() {    int n = -5;       g(n); }