我正在以这种方式使用模板。
int main (void)
{
plate targhe[MAX_CARS];
int ll = 0;
plate targa;
cin >> targa;
ll = insert_ord(targhe, ll, MAX_CARS, targa);
cout << endl;
system("pause");
return 0;
}
它有效,但当我传递一个typedef作为参数时,它说:没有匹配函数来调用&#34; insert_ord&#34;。
这是主要的。
AddRequiredServices(services)
答案 0 :(得分:4)
template <typename T>
int insert_ord (T V[], int ll, int const LF, T e);
上面的 function-template 不适用于类型为
的参数(int[999][20], int, int, int[20])
insert_ord
函数的第一个参数是plate
的二维数组,而最后一个是{1}}类型,它是一维数组。您应该声明 function-template ,如:
plate
然而,你的代码有一些挑剔。您template <typename T, int sizeOuter, int sizeInner>
int insert_ord (T (&v)[sizeInner][sizeOuter], int ll, int const LF, T (&e)[sizeOuter]);
中不需要void
。如果可能,请int main()
优先于constexpr
。最重要的是,使用std::array<T, N>
或考虑将数据结构包装在#define
或class