如下类声明有何错误#include<iostream> using namespace std; const int MAX_SIZE = 5; template<class T> class Array { T* pData; int nSize; public: Array(int n); //构造函数 ~Array(); //析构函数 //下标运算符重载 T& operator[](int idx){ return pData[idx]; } int Find(T& obj); //查找函数 void Sort(); //排序函数 }; template<class T> Array::Array(int n) { pData=new T[n]; nSize=n; } template<class T> int Array::Find(T& obj) { int i=0; for(;i<nSize;i++) { if(pData[i]==obj) return i; } return -1; } template<class T> void Array::Sort() { for(int i=0;i<nSize;i++) for(int j=0;j<nSize-i-1;j++) if(pDate[j]>pData[j+1]) { T t=pData[j]; pData[j]=pData[j+1]; pData[j+1]=t; } }
时间: 2023-11-28 19:50:59 浏览: 68
使用include <iostream>时一定要加using namespace std
该类声明有以下错误:
1. 在类的模板函数实现中,应该在函数名后加上模板参数列表,例如:
```
template<class T>
Array<T>::Array(int n) {
pData = new T[n];
nSize = n;
}
```
2. 在类的模板函数实现中,应该在类名后加上模板参数列表,例如:
```
template<class T>
int Array<T>::Find(T& obj) {
int i = 0;
for (; i < nSize; i++) {
if (pData[i] == obj)
return i;
}
return -1;
}
```
3. 在类的模板函数实现中,应该在类名后加上模板参数列表,例如:
```
template<class T>
void Array<T>::Sort() {
for (int i = 0; i < nSize; i++)
for (int j = 0; j < nSize - i - 1; j++)
if (pData[j] > pData[j + 1]) {
T t = pData[j];
pData[j] = pData[j + 1];
pData[j + 1] = t;
}
}
```
4. 在类的构造函数和析构函数中,应该在类名后加上模板参数列表,例如:
```
template<class T>
Array<T>::Array(int n) {
pData = new T[n];
nSize = n;
}
template<class T>
Array<T>::~Array() {
delete[] pData;
}
```
5. 在类声明中,应该在模板参数列表后加上类名,例如:
```
template<class T>
class Array {
T* pData;
int nSize;
public:
Array(int n); //构造函数
~Array(); //析构函数
T& operator[](int idx); //下标运算符重载
int Find(T& obj); //查找函数
void Sort(); //排序函数
};
```
阅读全文