Я пишу класс динамического массива. Я перегрузил operator[]
для доступа к указателю, содержащему данные в моем массиве. Также в моем классе есть член size
, обозначающий количество объектов в массиве. Мне нужно иметь возможность добавлять элементы, назначая их через A[i]
, а также добавлять в начало или конец, используя функции-члены. Проблема в том, что при назначении с помощью A[i] = x
я не знаю, чтобы увеличить size
. Есть ли способ отличить, используется ли оператор [] в левой части = вместо простого доступа к этому индексу? Я включил упрощенную версию своей реализации.
using namespace std;
#include <iostream>
class Array
{
public:
[constructors, destructor];
int& operator[](int index);
[addToFront(),addToBack(), etc.]
private:
int size; // holds the number of objects in the array
int capacity;
int* arr; // ptr to the data in the array
}
int& Array::operator[](int index) // overloaded array access operator
{
return arr[index]; // simplified version of what I use
}
int main()
{
Array A(6); // initialize capacity using parameterized constructor
A.addToFront(15); // addToFront() is able to increment size inside of its function
A[1] = 10; // How can I know that I am adding a new object to the array
return 0;
}
Спасибо!