c++ - 重载模板函数帮助 - C++

标签 c++ function templates overloading

我不断收到错误消息“没有重载函数“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/

相关文章:

c++ - TMP : how to write template code which converts any struct into a tuple?

PHP 函数定义,空参数

c++ - CRTP 和方法返回 void *

c++ - 对于 C++ 模板,有没有办法找到 "valid"输入的类型?

c++ - 获取已在模板中延迟的类型

c++ - 对半透明对象实现深度测试

c++ - Windows中打开文件的数量是否有限制

php - 无法连接到函数php内的数据库

oracle - 从oracle函数返回 boolean 值

c++ - STL+内存管理问题