我刚试过以下代码
class MailBox{
};
template<typename T>
void foo(T){
cout << "In foo" << endl;
}
template<typename T>
void foo1(T){
foo(T);
}
main()
{
MailBox m;
std::vector<MailBox> m1;
foo1(m1);
}
我们在编译时遇到错误
test1.cpp: In function âvoid foo1(T)â:
test1.cpp:15: error: expected primary-expression before â)â token
知道如何解决这个问题吗?
答案 0 :(得分:7)
您缺少正式参数:
template<typename T>
void foo(T t) {
cout << "In foo" << endl;
}
template<typename T>
void foo1(T t) {
foo(t);
}
答案 1 :(得分:1)
您忘记了参数的名称!
例如,foo1()
应如下所示:
template <typename T>
foo1 (T myT) {
foo(myT);
}
请记住,模板类型仍然是类型,您需要使用它们来声明这些类型的内容(如变量)。