У меня возникли проблемы с пониманием разницы между Array obj;
и Array* obj = new Array;
при перегрузке оператора индекса массива []
. Когда у меня есть указатель на объект, я получаю эти сообщения об ошибках на VS 2010.Перегрузка оператора нижнего индекса массива
ошибка C2679: бинарная «=»: ни один оператор не найден, который принимает правого операнд типа «Int» (или нет приемлемого преобразования)
может быть «Массив & Массива :: Оператора = (Const Массив &)»при попытке соответствовать списку аргументов„(массив, 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;
}
Может кто-то объяснить обоснование между двумя рода случаях для перегрузки операторов? Благодарю.
Похожее: http://stackoverflow.com/questions/2808030/subscript-operator-on-pointers – coelhudo