我無法理解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