求大神帮忙看下C++数组类模版到底有什么错误哦
#include <iostream>using namespace std;
template <class T>
class Array
{
private:
T* alist;
int size = 0;
public:
Array(int sz);
Array(const Array<T>& a);
~Array();
void display();
T& operator[](int i);
Array<T>& operator =(Array<T>& a);
operator T*(void)const;
};
template <class T>
Array<T>::Array(int sz)
{
if (sz <= 0)
{
cout << "Array size error." << endl;
exit(1);
}
else
{
size = sz;
alist = new T;
if (alist = NULL)
{
cout << "Array memory allocation error." << endl;
exit(1);
}
}
}
template <class T>
Array<T>::Array(const Array<T>& a)
{
size = a.size;
list = new T;
if (list = NULL)
{
cout << "Array memory allocation error." << endl;
exit(1);
}
int n = size;
T* pointer1 = list;
T* pointer2 = a.alist;
while (n--)
{
*pointer1++ = *pointer2++;
}
}
template <class T>
Array<T>::~Array()
{
delete[] alist;
size = 0;
}
template <class T>
void Array<T>::display()
{
for (int i = 0; i < size; i++)
{
cout << setw(5) << *(alist + i);
}
cout << endl;
}
template <class T>
T& Array<T>::operator[](int i)
{
if (i < 0 || i > size - 1)
{
cout << "Array[]size error." << endl;
exit(1);
}
return alist;
}
template <class T>
Array<T>& Array<T>::operator=(Array<T>& a)
{
int n = a.szie;
if (size != n)
{
delete[] alist;
alist = new T;
if (alist = NULL)
{
cout << "Array memory allocation error." << endl;
exit(1);
}
size = n;
}
T* pointer1 = alist;
T* pointer2 = a.alist;
while (n--)
{
*pointer1++ = *pointer2++;
}
return *this;
}
template <class T>
Array<T>::operator T*(void)const
{
return alist;
}
int main(void)
{
Array<int> a(2);
a = 10;
cout << a;
return 0;
}
http://bbs.fishc.com/forum.php?mod=image&aid=36014&size=300x300&key=9d64a389198a6114&nocache=yes&type=fixnone
file:///C:\Users\Administrator\AppData\Roaming\Tencent\Users\316550592\QQ\WinTemp\RichOle\OSEP78H4C94IE$SIFZPH]FG.png
大致读了一下,你的代码脉络不是很清晰
有几个明显的错误,比如:private中的size不能进行赋值
页:
[1]