在C ++中的模板中调用模板时出错

时间:2018-09-15 16:47:16

标签: c++

Event.h

 class Event {
   template <typename T, void(T::*MF)(int)>
   void temp_callback(int r){
   }

   template <typename T, void(T::*MF)(int)>
   void temp_add(T *obj, int a){
     obj->testobj3<T, MF>(obj, a); // throws error here
     temp_callback<T, MF>(a);
   }
 }

Test.h

 class Test{       
   void testobj(int r);
   void testobj2();

   template <typename T, void(T::*MF)(int)>
   void testobj3(T *obj, int a){
   }
 }

Test.cc

 void Test::testobj2(){
   Event eve;
   eve.temp_add<Test, &Test::testobj>(this, 1);
 }

 int main() {
   Test t;
   t.testobj2();
 }

以上代码会引发错误,提示“错误:','标记之前的预期主表达式”。如果我改为为testobj3定义一个非模板函数并调用obj-> testobj3(抛出错误的位置),则可以正常工作。不确定为什么模板调用会引发错误?

非常感谢您的时间!

0 个答案:

没有答案