У меня проблемы с пониманием разницы между Array obj;
и Array* obj = new Array;
при перегрузке оператора индекса массива []
. Когда у меня есть указатель на объект, я получаю эти сообщения об ошибках VS 2010 .
ошибка C2679: двоичный файл '=': не найден оператор, который принимает правый операнд типа 'int' (или нет допустимого преобразования)
может быть 'Array & Array :: operator = (const Array &)' при попытке сопоставить список аргументов '(Array, int)'
#include <iostream>
class Array
{
int arr[10] ;
public:
int& operator[]( int index )
{
return arr[index] ;
}
};
int main()
{
//Array* obj = new Array; Error
Array obj; // Correct
for( int i=0; i<10; ++i )
obj[i] = i;
getchar();
return 0;
}
Может ли кто-нибудь объяснить обоснование между двумя видами случаев перегрузки операторов? Спасибо.