The following is my code On line 74 there's an error: lvalue required as left operand of assignement. I believe it is due to the declaration of my operator [], but I can't fix it. Any suggestions? Thanks in advance.
#include<iostream>
using namespace std;
void constructArr(int *arr, int n){
for (int i=0; i<n; i++){
arr = '\0';
}
}
class vector_int{
public:
int *arr;
int size;
vector_int(int n){
size = n-1;
arr = new int [n];
constructArr(arr, size);
}
vector_int(){
arr = new int[1];
size = 0;
}
~vector_int(){
delete [] arr;
}
void push_back(int n){
int *temp;
temp = new int [size+1];
constructArr(temp, size);
temp = arr;
temp[size] = n;
arr = temp;
size++;
}
void pop_back(){
int *temp;
temp = new int[size-1];
constructArr(temp, size-1);
for (int i=0; i<size-1; i++){
temp[i] = arr[i];
}
arr = new int [size-1];
arr = temp;
size--;
}
int length(){
return size;
}
int top(){
return arr[size-1];
}
int operator [](int index){
if (index<=size){
return arr[index];
}
else if (index<0 || index>size-1){
return arr[size-1];
}
}
int& operator[](int index)const{ //how to correct this?
if (index>size-1 || index<0){
return arr[size-1];
}
else{
return arr[index];
}
}
};
int main(){
vector_int test(10);
for (int i=0; i<10; i++){
test[i] = i; //compiler returns error here
}
for (int i=0; i<10; i++){
cout<<test[i];
}
}