|
5鱼币
#include<iostream>
using namespace std;
template<typename T>
class myArray
{
public:
myArray(int s);
myArray (const myArray& theArray);
~myArray();
T& operator[](int index);
myArray& operator=(const myArray& array);
void Add();
static T& mean();
private:
int size;
T* pelement;
static int num;
static T sum;
};
template<typename T> int myArray<T>::num = 0;
template<typename T> T myArray<T>::sum;
template <typename T>
myArray<T>::myArray(int s)
{
size = s;
num +=size;
pelement = new T[size];
}
template <typename T>
myArray<T>::myArray(const myArray& theArray)
{
size = theArray.size;
pelement = new T[size];
for(int i=0;i<size;i++)
pelement[i] = theArray.pelement[i];
}
template<typename T>
myArray<T>::~myArray()
{
delete[] pelement;
}
template<typename T>
T& myArray<T>::operator[](int index)
{
if(index<0||index>size)
throw out_of_range("out of range");
return pelement[index];
}
template<typename T>
myArray<T>& myArray<T>::operator=(const myArray& array)
{
if(&array==this)
return *this;
size = array.size;
if(pelement) delete[] pelement;
pelement = new T[size];
for(int i=0;i<size;i++)
pelement[i] = array.pelement[i];
}
template<typename T>
void myArray<T>::Add()
{
for(int i=0;i<size;i++)
sum += pelement[i];
}
template<typename T>
T& myArray<T>::mean()
{
T m = sum/num;
return m;
}
void main()
{
myArray<double> d1(5);
for(int i=0;i<5;i++)
d1[i] = i*i;
d1.Add();
myArray<double> d2(4);
for(i=0;i<4;i++)
d2 = i;
d2.Add();
cout<<"mean is:"<<myArray<double>::mean()<<endl;
}
运行结果是:
mean is:4
请教一下,为什么不能在main函数内直接用类调用sum和num?
比如像“ cout<<"num is:"<<myArray<int>::num<<endl;”(系统会报错)[/i][/i][/i][/i][/i][/i]
|
|