菜鸟求助。C++教材上例题

#ifndef ARRAY_H
#define ARRAY_H
#include

template
class Array{
private:
T*list;
int size;
public:
Array(int sz = 50);
Array(const Array&a);
~Array();
Array& operator=(const Array&rhs);
T& operator const;
operator const T*() const;
int getSize() const;
void resize(int sz);
};

template
Array::Array(int sz){
assert(sz >= 0);
size = sz;
list = new T[size];
}

template
Array::~Array(){
delete[] list;
}

template < class T>
Array::Array(const Array&a){
size = a.size;
list = new T[size];
for (int i = 0; i < size; i++)
list[i] = a.list[i];
}

template
Array&Array::operator=(const Array& rhs){
if (&rhs != this){
if (size != rhs.size){
delete[]list;
size = rhs.size;
list = new T[size];
}
for (int i = 0; i < size; i++)
list[i] = rhs.list[i];
}
return *this;
}

template
T &Array::operator{
assert(n >= 0 && n < size);
return list[n];
}

template
const T &Array::operatorconst{
assert(n >= 0 && n < size);
return list[n];
}
template
Array::operator T *(){
return list;
}

template
Array::operator const T *(){
return list;
}

template < class T>
int Array::getSize() const{
return size;
}

template
void Array::resize(int sz){
assert(sz >= 0);
if (sz == size)
return;
T*newList = new T[sz];
int n = (sz < size) ? sz : size;
for (int i = 0; i < n; i++)
newList[i] = List[i];
delete[] list;
list = newList;
size = sz;
}
#endif

编译报错图片说明代码是完全按照书上敲的,请问错误具体在哪

函数的定义和声明不匹配

这个代码缺的太多了吧

#include
using namespace std;
template
class Array {
private:
T*list;
int size;
public:
Array(int sz = 50);
Array(const Array&a);
~Array();
Array& operator=(const Array&rhs);
T& operator ;
T &operator const;
operator T ();
operator const T
() const;
int getSize() const;
void resize(int sz);
};
template < class T>
Array::Array(int sz) {
assert(sz >= 0);
size = sz;
list = new T[size];
}
template < class T>
Array::~Array() {
delete[] list;
}
template < class T>
Array::Array(const Array&a) {
size = a.size;
list = new T[size];
for (int i = 0; i < size; i++)
list[i] = a.list[i];
}
template
Array&Array::operator=(const Array&rhs) {
if (&rhs != this) {
if (size != rhs.size) {
delete[]list;
size = rhs.size;
list = new T[size];
}
for (int i = 0; i < size; i++)
list[i] = rhs.list[i];
}
return *this;
}
template < class T>
T& Array::operator {
assert(n >= 0 && n < size);
return list[n];
}
template
T &Array::operator const{
assert(n >= 0 && n < size);
return list[n];
}
template
Array::operator T *() {
return list;
}
template
Array::operator const T *()const {
return list;
}
template
int Array::getSize() const {
return size;
}
template
void Array::resize(int sz) {
assert(sz >= 0);
if (sz == size)
return;
T*newList = new T[sz];
int n = (sz < size) ? sz : size;
for (int i = 0; i < n; i++)
newList[i] = List[i];
delete[] list;
list = newList;
size = sz;
}

我把代码重写了下,你可以试试,可以运行通过了

#ifndef ARRAY_H
#define ARRAY_H
#include
using namespace std;

template< class T>
class Array{
private:
T*list;
int size;
public:
Array(int sz = 50);
Array(const Array&a);
~Array();
Array& operator=(const Array&rhs);
T& operator const;
operator const T*() const;
int getSize() const;
void resize(int sz);
};
template< class T>
Array::Array(int sz){
assert(sz >= 0);
size = sz;
list = new T[size];
}
template< class T>
Array::~Array(){
delete[] list;
}
template < class T>
Array::Array(const Array&a){
size = a.size;
list = new T[size];
for (int i = 0; i < size; i++)
list[i] = a.list[i];
}
template< class T>
Array&Array::operator=(const Array& rhs){
if (&rhs != this){
if (size != rhs.size){
delete[]list;
size = rhs.size;
list = new T[size];
}
for (int i = 0; i < size; i++)
list[i] = rhs.list[i];
}
return *this;
}
template< class T>
T &Array::operator{
assert(n >= 0 && n < size);
return list[n];
}
template< class T>
const T &Array::operatorconst{
assert(n >= 0 && n < size);
return list[n];
}
template< class T>
Array::operator T *(){
return list;
}
template< class T>
Array::operator const T *(){
return list;
}
template < class T>
int Array::getSize() const{
return size;
}
template< class T>
void Array::resize(int sz){
assert(sz >= 0);
if (sz == size)
return;
T*newList = new T[sz];
int n = (sz < size) ? sz : size;
for (int i = 0; i < n; i++)
newList[i] = List[i];
delete[] list;
list = newList;
size = sz;
}

#endif

//这是我改好的