Проблема с вашим определением operator []
int myArray & operator [](int x) // This is the line where error is as by compiler
{
return a[x];
}
Должно быть:
int & myArray::operator [](const int x)
{
return a[x];
}
Кроме того, как предложение [] обычно перегружено, чтобы избежать пересеченияграницы массива.Таким образом, ваша перегрузка [] в идеале должна проверять x
против size
перед разыменованием массива по этому индексу.Без такой проверки вся цель перегрузки [] будет побеждена.