我不断收到错误消息“没有重载函数“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
.因此,您必须在调用时指定它,例如printArray<int>(1,3)
.
但是,不清楚正在打印哪个数组:您是否忘记为数组添加参数,例如printArray(a,1,3)
?在这种情况下,您可能能够拥有 T
从该参数推导出来,因为它在 printArray(a,count)
中版本。
此外,void
的返回类型意味着你不能写 elements=printArray(1,3)
即使可以推导出模板参数。
关于c++ - 重载模板函数帮助 - C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10199054/