[問題] iterator實做 debug
#include<iostream>
using namespace std;
template<typename T>
class obj
{
private:
T* data;
int n;
public:
obj(){data=new T[10];n=0;}
void push(const T& a){data[n++]=a;}
~obj(){delete []data;n=0;}
const T& operator[](int num){return data[num];}
class Iter
{
private:
obj* ptr;
int nn;
public:
Iter(){ptr=0,nn=0;}
Iter(const obj& a){ptr=a;nn=0;}
const T& operator*(){return ptr->data[nn];}
//cannot convert `const obj<int>' to `obj<int>*' in assignment
const Iter operator=(const Iter& a)
{
ptr=a.ptr;
nn=a.nn;
return a;
}
const Iter operator+=(int num){nn+=num;return *this;}
bool operator!=(const Iter& a){if(nn!=a.nn)return 1;return 0;}
~Iter(){ptr=0,nn=0;}
};
const Iter begin(){Iter s(*this);return s;}
//In constructor `obj<T>::Iter::Iter(const obj<T>&) [with T = int]':
//instantiated from `const obj<T>::Iter obj<T>::begin() [with T = int]'
const Iter end(){Iter s(*this);s+=n;return s; }
};
main()
{
obj<int> a;
a.push(1);
a.push(2);
a.push(3);
obj<int>::Iter it;
//instantiated from here
for(it=a.begin();it!=a.end();it+=1){cout<<*it<<" ";}
system("pause");
}
//dev C++顯示的錯我都寫在註解了
//可是我真的不知道是哪的問題
//縮排沒排好,請見諒
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.165.104.173
→
05/29 20:21, , 1F
05/29 20:21, 1F
→
05/29 20:25, , 2F
05/29 20:25, 2F
→
05/29 22:52, , 3F
05/29 22:52, 3F
→
05/29 22:52, , 4F
05/29 22:52, 4F
→
05/29 22:57, , 5F
05/29 22:57, 5F
→
05/29 23:02, , 6F
05/29 23:02, 6F
→
05/29 23:03, , 7F
05/29 23:03, 7F
→
05/29 23:10, , 8F
05/29 23:10, 8F