读书人

请教这个报错如何修改?多谢

发布时间: 2012-11-05 09:35:12 作者: rapoo

请问这个报错怎么修改?谢谢

C/C++ code
#include "stdafx.h"#include <string>#include <iostream>using namespace std;template <typename T> T fObj(T i,T j){    return 0;}template <typename T> T fref(const T &m,const T &n){    return 0;}int _tmain(int argc, _TCHAR* argv[]){    int a[20],b[20];    fObj(a,b);    fref(a,b);    return 0;}


1>c:\documents and settings\administrator\my documents\visual studio 2010\projects\2\2\2.cpp(22): error C2893: 未能使函数模板“T fref(const T &,const T &)”专用化
1> 用下列模板参数:
1> 'int [20]'
1>
1>生成失败。

[解决办法]
template <typename T,int N> T fref(const T (&m)[N],const T (&n)[N])
{
return T();
}
[解决办法]
T在你的代码里是个int类型,而你传入模版函数的是数组名,也就是地址(指针),可以你定义的模板函数里,参数却是一个int类型型的引用,int a = 0 , b = 0 ;这样才对的上

读书人网 >C++

热点推荐