【发布时间】:2014-02-14 03:42:57
【问题描述】:
我的函数模板有问题。我遇到的错误是:'无法使用以下模板参数专门化函数模板'T sumfun(T &,size_t):coord [3]'。有谁知道如何纠正?我尝试了“模板坐标 sumfun(T &ob, size_t ndim)”,但它会产生更多错误。
template <class T> T sumfun(T &ob, size_t ndim){
T sum();
for(size_t i = 0 ; i <= ndim ; i++)
sum + = ob[i];
return sum;
};
class coord
{
double *crd;
public:
coord(){crd[0]=0;crd[1]=0;};
coord(double xx, double yy) {
alloc();
crd[0] = xx; crd[1] = yy;
}
coord & operator + ( const coord &prawy);
private:
void alloc() {
try {
crd = new double [2];
}catch(bad_alloc) {
}
}
};
coord & coord::operator+(const coord &prawy){
coord tmp(0,0);
tmp.crd[0] = crd[0] + prawy.crd[0];
tmp.crd[1] = crd[1] + prawy.crd[1];
return tmp;
};
int _tmain(int argc, _TCHAR* argv[])
{
coord tab[] = {
coord(0, 0), coord(1,2), coord(2, 1) };
coord sum = sumfun(tab, sizeof(tab)/sizeof(coord));
//cout << sum;
system("pause");
return 0;
}
我不能改变主函数,所以参数必须是这样的:
坐标总和 = sumfun(tab, sizeof(tab)/sizeof(coord));
【问题讨论】: