1 c++ parameters templates default
我正在尝试在模板函数中使用默认参数.以下是我正在尝试做的事情的最小例子:
template <typename T0, typename T1>
void sort(Vector<T0> &v0,Vector<T1> &v1=0)
{
//sort v0, if (v1 != 0) sort it according to v0
}
Run Code Online (Sandbox Code Playgroud)
#include "sort.h"
Vector<int> v0;
sort(v0);
Run Code Online (Sandbox Code Playgroud)
这不编译; 编译器给出错误"没有匹配函数来调用'sort'".
基本上这个函数应该对向量v0(任意数据类型)进行排序.另外,可以给出以与向量v0相同的方式排序的第二向量v1(任意)作为参数.当然,我可以简单地通过使用重载函数来解决这个问题,但由于我想将其他向量的列表扩展到5,我需要数百种不同的函数.
更新:感谢您的回复.我修改了我的问题描述,让你更好地了解我正在尝试做什么.
您不能将引用默认为0.您必须使用指针来执行此操作(如果您坚持).
T1如果没有实际Vector<X>的工作,编译器也无法直觉.参数2需要具体的参数类型Vector<T0>*.例如,如果第二个参数是可以的,因为类型可以从参数1(不是默认的)中得到.否则,您必须在每次调用时指定模板参数testfunction.
添加有关您要实现的内容的信息可能会提供更好的答案.这似乎有点令人费解.
| 归档时间: |
|
| 查看次数: |
393 次 |
| 最近记录: |