I am trying to create a member function which print out the array that I control, but I am running into Seg fault. Any help would be really useful!
Here is my header file, all the code in there work except the last member function.
#include <iostream>
#include <assert.h>
using namespace std;
#ifndef _ARRAY_H
#define _ARRAY_H
template<class T>
class Array{
  private:
    T *a;
    int length;
  public:
    // constructor
    Array (int len){
      length = len;
      a = new T[length];
      for (int i = 0; i < len; i++){
        a[i]=0;
      }
    }
    // destructor
    ~Array()
      {delete[] a;}
    // operator overload
    T& operator [](int i){
      assert (i>=0 && i < length);
      return a[i];
    }
    // operator overload
    Array<T>& operator=(Array<T> &b){
      if (a !=nullptr) delete[] a;
      a = b.a;
      b.a = nullptr;
      length = b.length;
      return *this;
    }
    //get the length of the array
    int arraylength(){
      return length;
    }
//------------------This below is where I am having issue --------//
    //print out the array
    Array<T> printarray(){
      for (int i = 0; i < length; i++){
        cout << a[i];
      }
    }
};
int main();
#endif
This is my main file
#include <iostream>
#include "../include/array.h"
using namespace std;
int main(){
  // initialize array
  Array <int> a(5);
  Array <int> b(5);
  // put stuff into array
  for (int i = 0; i< a.arraylength(); i++){
    a[i] = i;
  }
  // set b = a using operator overload
  b = a;
  // print out the result b array
  for (int i = 0; i < b.arraylength(); i++){
    cout << b[i] << endl;
  }
  a.printarray();
  return 0;
}
Again. Thank you for the help, I am quite new to C++ and mostly self taught.
 
     
    