1

我刚刚尝试了以下代码

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

知道如何解决这个问题吗?

4

2 回答 2

7

您缺少形式参数:

 template<typename T>
     void foo(T t) {
         cout << "In foo" << endl;
 }

 template<typename T>
     void foo1(T t) {
         foo(t);
 }
于 2013-03-01T07:49:38.657 回答
1

您忘记了参数的名称!

例如,foo1()应该如下所示:

template <typename T>
  foo1 (T myT) {
    foo(myT);
  }

请记住,模板类型仍然是类型,您需要使用它们来声明这些类型的事物(如变量)。

于 2013-03-01T07:50:42.223 回答