我不断收到错误消息“没有重载函数“printArray”的实例与参数列表匹配。有人会告诉我为什么吗?”我正在尝试重载模板函数,以便它显示在指定位置开始和结束的数组元素。
我有初始模板和功能:
template< typename T >
void printArray( const T *array, int count )
还有我要重载的功能。
template< typename T >
void printArray(int lowSubscript, int highSubscript)
和我的电话:
// display elements 1-3 of array a
cout << "Array a from positions 1 to 3 is:\n";
elements = printArray(1,3);
我对第一个printArray的调用未显示任何错误:
// display array a using original printArray function
cout << "\nUsing original printArray function\n";
printArray( a, ACOUNT );
最佳答案
printArray
的第二个重载是模板,但是签名不依赖于模板参数T
。因此,您必须在 call 时指定它,例如printArray<int>(1,3)
。
但是,不清楚要打印哪个数组:您是否忘记为数组添加参数,例如printArray(a,1,3)
?在这种情况下,您可以从该参数推导T
,就像printArray(a,count)
版本中的一样。
同样,void
的返回类型意味着即使可以推导出template参数,也无法编写elements=printArray(1,3)
。