Question: Help Error Checking C++ Answers Only In file included from main.cpp:9:0: myArray.h:41:22: error: const myArray& myArray::operator[](int) cannot be overloaded const myArray & operator[](int index); ^

Help Error Checking C++ Answers Only

In file included from main.cpp:9:0: myArray.h:41:22: error: const myArray& myArray::operator[](int) cannot be overloaded const myArray & operator[](int index); ^ myArray.h:40:19: error: with const myArray myArray::operator[](int) const myArray operator[](int index); ^ myArray.h:41:22: error: const myArray& myArray::operator[](int) cannot be overloaded const myArray & operator[](int index); ^ myArray.h:40:19: error: with const myArray myArray::operator[](int) const myArray operator[](int index);

CODE

MAIN.CPP

#include #include "myArray.h"

using namespace std;

/* * */ int main(int argc, char** argv) {

myArray Array1; myArray Array2(10); myArray Array3(Array2); myArray Array4(10, -10);

cout << "Test of printInfo for Array1" << endl; cout << &Array1 << endl; // Array1.printMyInfo(); cout << Array1 << endl; cin >> Array1; cout << Array1 << endl; cout << "PREFIX" << endl; cout << ++Array1 << endl; cout << Array1 << endl; cout << "POSTFIX" << endl; cout << Array1++ << endl; cout << Array1 << endl; cout << "NEGATION" <

return 0; }

myArray.H

#ifndef ARRAY_H #define ARRAY_H

#include using namespace std;

class myArray { friend ostream & operator<<(ostream &lhs, const myArray &rhs); friend istream & operator>>(istream &lhs, myArray &rhs); public: myArray(); myArray(int _size); myArray(int _size, double value); myArray(const myArray& orig); ~myArray();

void print() const; void expand();

int getSize() const; double getData(int index) const; double operator[](int index) const;

void setData(int index, double value); bool equal(const myArray& rhs) const; bool operator==(const myArray& rhs) const; bool operator!=(const myArray& rhs) const; void operator=(const myArray& rhs); const myArray operator++(); //prefix ++myArray const myArray operator++(int dummy); //postfix myArray++ const myArray operator+(const myArray & rhs) const; const myArray operator-(); const myArray operator[](int index); const myArray & operator[](int index); void printMyInfo() const;

private: double *data; int size; void setSize(int value); };

#endif /* ARRAY_H */

myArray.cpp

#include "myArray.h"

myArray::myArray() : size(10) { // size = 10; data = new double [size]; for (int i = 0; i < size; i++) { data[i] = i; } }

myArray::myArray(int _size) : size(_size) { size = _size; data = new double [size]; for (int i = 0; i < size; i++) { data[i] = i; } }

myArray::myArray(int _size, double value) : size(_size) { // size = _size; data = new double [size]; for (int i = 0; i < size; i++) { data[i] = value; } }

myArray::myArray(const myArray& orig) { setSize(orig.getSize()); data = new double [getSize()]; for (int i = 0; i < getSize(); i++) { setData(i, orig.getData(i)); } }

myArray::~myArray() { delete [] data; }

int myArray::getSize() const { return size; }

void myArray::setSize(int value) { if (value > 0) { size = value; } }

void myArray::setData(int index, double value) { if ((index >= 0) && (index < size)) { data[index] = value; } else { cout << "NO!" << endl; } }

double myArray::getData(int index) const { if ((index >= 0) && (index < size)) { return data[index]; } else { return data[size - 1]; } }

double myArray::operator[](int index) const { if ((index >= 0) && (index < size)) { return data[index]; } else { return data[size - 1]; } }

void myArray::print() const { for (int i = 0; i < size; i++) { cout << data[i] << " "; } cout << endl; }

void myArray::expand() { double *localArray = new double[size + 1];

for (int i = 0; i < size; i++) { localArray[i] = data[i]; } localArray[size] = size;

delete [] data; setSize(size + 1); data = localArray; // myArray = new int[size]; // // //Is this a deep-copy or a shallow-copy? // //Can you replace one with the other? // //What are the advantages and disadvantages? // for(int i=0; i < size; i++) { // myArray[i] = localArray[i]; // } // delete [] localArray; }

bool myArray::equal(const myArray& rhs) const { bool result(true);

if (getSize() != rhs.getSize()) { result = false; } else { for (int i = 0; i < getSize(); i++) { if (getData(i) != rhs.getData(i)) { result = false; } } } return result; }

bool myArray::operator==(const myArray& rhs) const { bool result(true);

if (getSize() != rhs.getSize()) { result = false; } else { for (int i = 0; i < getSize(); i++) { if (getData(i) != rhs.getData(i)) { result = false; } } } return result; }

bool myArray::operator!=(const myArray& rhs) const { bool result(false);

if (getSize() != rhs.getSize()) { result = true; } else {

for (int i = 0; i < getSize(); i++) { if (data[i] != rhs[i]) { result = true; } } } return result; // return !(*this == rhs); }

void myArray::operator=(const myArray& rhs) { delete [] data; setSize(rhs.getSize()); data = new double [getSize()]; for (int i = 0; i < size; i++) { data[i] = rhs[i]; } }

const myArray myArray::operator+(const myArray & rhs) const { myArray Arr(rhs); if (getSize() != rhs.getSize()) { cout << "Exception" << endl; } else { for (int i = 0; i < getSize(); i++) { Arr.setData(i, rhs[i] + data[i]); } } return Arr; }

const myArray myArray::operator++() { for(int i=0; i < getSize(); i++) { data[i]++; } return *this; }

const myArray myArray::operator++(int dummy) { myArray temp(*this); for(int i=0; i < getSize(); i++) { data[i]++; } return temp; }

const myArray myArray::operator-(){ myArray temp(*this);

for(int i = 0;i < getSize(); i++) { data[i] *-1;

} return temp; }

void myArray::printMyInfo() const { cout << "I am at: " << this << endl; cout << "My data is at: " << &data << endl; cout << "My size is at: " << &size << " with a value of : " << size << endl; cout << "My data points to: " << data << endl; cout << "The first item in data is: " << *data << endl; }

ostream & operator<<(ostream &lhs, const myArray &rhs) { for (int i = 0; i < rhs.getSize(); i++) { lhs << rhs[i] << " "; } cout << endl; return lhs; }

istream & operator>>(istream &lhs, myArray &rhs) { double temp; for (int i = 0; i < rhs.getSize(); i++) { lhs >> temp; rhs.setData(i, temp); } return lhs; }

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!