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(抛出错误的位置),则可以正常工作。不确定为什么模板调用会引发错误?
非常感谢您的时间!