我有一個DynamicArrayIterator類這樣無法轉換誤差*操作
template <class T> class DynamicArrayIterator{
private:
int currentPosition;
DynamicArray<T>* array; //pointer to the dynamic array
int direction; //1 indicates forward, -1 indicates backwards
public:
DynamicArrayIterator(DynamicArray<T>* dyn, int pos, int dir){
array = dyn;
currentPosition = pos;
direction = dir;
}
T operator *(){
T t = array[currentPosition];
return t;
}
void operator ++(){
this->currentPosition += this->direction;
}
的DynamicArray類被設置爲
template <class T> class DynamicArray{
private:
T *storage;
int cur; //next position available
int max; //capacity
public:
DynamicArray(); //constructor
~DynamicArray(); //destructor
void add(T item);
T remove(int i);
int size();
/*20*/ T& operator [](int i){ //selected if object called on is not const
return storage[i];
}
T operator [](int i)const{ //selected if called by a const object
return storage[i];
}
DynamicArrayIterator<T> begin(){
return DynamicArrayIterator<T>(this, 0, 1);
}
DynamicArrayIterator<T> end(){
return DynamicArrayIterator<T>(this, this->cur, 1);
}
DynamicArrayIterator<T> r_begin(){
return DynamicArrayIterator<T>(this, 0, -1);
}
DynamicArrayIterator<T> r_end(){
return DynamicArrayIterator<T>(this, this->cur, -1);
}
};
我有超載*操作麻煩;我希望能夠直接獲取和設置值;我這樣稱呼它:
int main(){
DynamicArray<int> foo;
foo.add(3);
foo.add(2);
cout << foo[1] << endl;
foo[1] = 10;
cout << foo[1] << endl;
DynamicArrayIterator<int> a = foo.begin();
++a;
cout << *a << endl;
}
,並收到錯誤
DynamicArray.cpp:98:29: error: cannot convert ‘DynamicArray<int>’ to ‘int’ in initialization
T t = array[currentPosition];
我要去哪裏錯了?
*你在哪裏得到錯誤(請用例如評論標出)?編譯器告訴你什麼?(請編輯你的問題,包括*完整*輸出,*全*和*未編輯*)? –