【发布时间】:2011-03-24 15:46:11
【问题描述】:
您好,我尝试在 vc++ 中构建一个模板函数,如下所示:
template<class _Fn0,class _Fn1> void for_each(_Fn0 _Func0,_Fn1 _Func1)
{
_Func0(12);
_Func1(12);
}
当我为 _Func0/1 使用一个全局函数时,这个工作正常。
void aglobal(int a)
{
a++;
}
for_each(aglobal,aglobal);
但是当我使用 memeber 类函数时,我会收到错误消息。
class A
{
public:
void aa(int a)
{
a++;
}
void bb(int b)
{
b++;
}
void cc()
{
for_each(&A::aa,&A::bb);
}
};
错误 C2064:术语不计算为带 1 个参数的函数 1> 参见正在编译的函数模板实例化 'void for_each(_Fn0,_Fn1)' 的参考。
我该如何解决这个错误?
谢谢赫兹。
【问题讨论】:
-
请注意,以下划线后跟大写字母的名称(如
_Fn0或_Func0)是保留的,因此您不能在代码中使用它们。编译器和标准库实现通常在内部使用这些名称。