Given the class definition and associated code.
a) Modify the code implementing the operator[] to throw an int exception if the index is out of the declared array range. The exception object is to have the value of the out-of-range index. Be sure you add an exception specification to the operator function.
b) Modify the code in main that calls operator[] to catch the exception and terminate the program using exit(1).
```
#include
using namespace std;
class intVec
{
public:
intVec();
intVec(int n);
// other members
int& operator[](int index);
private:
int* v;
int size;
};
intVec::intVec(int n): v(new int[n])
{
for (int i=0; i < n; i++) v[i] =0;
}
int& intVec::operator[](int index)
{
return v[index];
}
int main()
{
intVec myVec(10);
{
//Block enclosing "for" is because VC++ does not
//define for loop control variables inside the
//"for" loop block as the C++ Standard requires
for(int i = 0; i < 10; i++)
myVec[i] = (i-5)*(i-5);
}
{
for(int i = 0; i < 10; i++)
cout << myVec[i] << " ";
cout << endl;
}
int i = -1;
cout << "accessing myVec[" << i << "]" << endl;
cout << myVec[i] << endl;
return 0;
}
```
I have bolded the lines changed in the problem statement to create the answer:
```
#include
#include
using namespace std;
class intVec
{
public:
intVec();
intVec(int n);
// other members
int& operator[](int index) throw (int);
private:
int* v;
int size;
};
intVec::intVec(int n): v(new int[n]), size(n)
{
for (int i=0; i < size; i++) v[i] =0;
}
//this function changed to an add exception specification
//and catching out-of-range index values
int& intVec::operator[](int index) throw (int)
{
if( 0 <= index && index < size)
return v[index];
else
throw index;
}
int main()
{
intVec myVec(10);
try
{
for(int i = 0; i < 10; i++)
myVec[i] = (i-5)*(i-5);
}
catch(int e)
{
cout << "Caught illegal index of " << e
<< "\nTerminating the program\n";
exit(1);
}
try
{
for(int i = 0; i < 10; i++)
cout << myVec[i] << " ";
cout << endl;
}
catch(int e)
{
cout << "Caught illegal index of " << e
<< "\nTerminating the program\n";
exit(1);
}
int i = -1;
cout << "accessing myVec[" << i << "]" << endl;
try
{
cout << myVec[i] << endl;
}
catch (int e)
{
cout << "Caught illegal index of " << e
<< "\nTerminating the program\n";
exit(1);
}
return 0;
}
```
You might also like to view...
If Windows Defender finds any spyware and you want to view it one time, you should choose which of the following actions?
A) Always allow B) Allow one time C) Quarantine D) Remove
Bullets are one example of a ________ button: click once it's on, click again it's off
Fill in the blank(s) with correct word