привет всем!
Собственно пытаюсь сделать контейнерный класс, но почему-то программа крашиться.
Так же при перегрузке оператора << не видит классовых перменных
using namespace std;
template <typename T>
class matrix
{
private:
T* Matrix;
int _col;
public:
class Iterator;
matrix(int n=1):_col(n)
{
Matrix=new T[n];
}
T&operator[](const int&n)
{
if(n>0&&n<_col)
return Matrix[n];
}
Iterator begin(){return Matrix;}
Iterator end(){return Matrix+_col;}
friend ostream&operator <<(ostream&s,const matrix<T>&n);
class Iterator
{
public:
T*cur;
Iterator(T*first):cur(first)
{}
T&operator +(int n){return *(cur+n);}
T&operator -(int n){return *(cur-n);}
T&operator ++(int){return *cur++;}
T&operator --(int){return *cur--;}
T&operator ++(){return *++cur;}
T&operator --(){return *--cur;}
bool operator != (const Iterator&it){return cur!=it.cur;}
bool operator ==(const Iterator&it){return cur==it.cur;}
T& operator*(){return *cur;}
};
};
ostream&operator <<(ostream&s,const matrix<T>&n)
{
s<<Matrix[n];
return s;
}
int main()
{
matrix <char*>Matrix(3);
Matrix[0]="str1";
Matrix[1]="str2";
Matrix[3]="str2";
auto it=matrix<char*>::Iterator(Matrix.begin());
while(it!=Matrix.end())
{
cout<<*it<<endl;
it++;
}
_getch();
return 0;
}