首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

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

2012-11-05 
请问这个报错怎么修改?谢谢C/C++ code#include stdafx.h#include string#include iostreamusing nam

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

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 ;这样才对的上

热点排行