C ++从另一个模板函数调用模板函数

时间:2013-03-01 07:47:44

标签: c++ templates

我刚试过以下代码

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

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

2 个答案:

答案 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);
  }

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