C++静态成员变量的初始化及应用...求助大神
大神们路过麻烦解决小弟的问题啦,关于模版类静态成员变量的使用~小弟头痛了一个早上啦!希望大神们能够解决这个麻烦啊~什么建议都接受的
/*对数组进行排序、求最大值和求元素和的函数采用静态成员函数的方式封装成数组算法类模板ArrayAlg,并采用相关数据进行测试。*/
#include <iostream>
using namespace std;
template <typename T,int n>
class ArrayAlg{
static T Array[n];
public :
ArrayAlg(T * temp);
static void Array_array();
static T Array_max();
static T Total();
static void print();
};
template <typename T,int n>
ArrayAlg<T , n>::ArrayAlg(T * temp)//初始化
{
for(int i = 0; i < n; i ++)
Array[i] = temp[i];
}
template <typename T ,int n>
T ArrayAlg<T , n>::Array_max()
{
T max = Array[0];
for(int i = 0 ; i < n ; i ++)
if(Array[i] > max)
max = Array[i];
return max;
}
template <typename T ,int n>
T ArrayAlg<T , n>::Total ()
{
T temp = Array[0];
for(int i = 1;i < n ; i ++)
temp = temp + Array[i];
return temp;
}
template <typename T,int n>
void ArrayAlg<T ,n>::Array_array()//排序
{
T temp;
for(int i = 0 ; i < n ; i ++)
for(int j = 0; j < i; j++)
{
if(Array[j] > Array[j+1])
{
temp = Array[j];
Array[j] = Array[j+1];
Array[j+1] = temp;
}
}
}
template <typename T,int n>
void ArrayAlg<T ,n>::print()
{
for(int i = 0; i < n; i++)
cout << Array[i] << " " << endl;
}
void main()
{
int Int_Array[5] = {4,1,3,2,6};
ArrayAlg<int,5> Test_Array(Int_Array);
cout << "The max is : "<< Test_Array.Array_max() << endl;
cout << "The total is : "<< Test_Array.Total () << endl;
Test_Array.Array_array ();
Test_Array.print ();
}
/*
错误提示
5_5.obj : error LNK2001: 无法解析的外部符号 "private: static int * ArrayAlg<int,5>::Array" (?Array@?$ArrayAlg@H$04@@0PAHA)
*/
template<>//模板特化
int ArrayAlg<int,5>::Array[5];