我尝试使用类成员函数作为模板参数,在下面的代码中,我喜欢我的" templateOp"表现得像我的" nonTemplateOp"当我创建该函数时传递" memberAdd"而不是"添加"。 我尝试过多次迭代,比如尝试将模板参数作为类的一部分引用,但是没有成功。 即: 模板
事实上,我并没有真正理解范围,为什么在这种情况下适用的参数函数是不属于类的参数函数,我期望从范围的角度来看view,如果模板在类中,模板的参数也应该在类中。
TL; DR我为此工作主要缺少什么?
test.templateOp<memberAdd>(2);
完整代码如下:
#include <iostream>
class Test
{
public:
Test(int value): a(value) {}
template <int (*T)(int)>
void templateOp(int opvalue)
{
int r = T(opvalue);
std::cout << "Result is " << r << std::endl;
}
void nonTemplateOp(int opvalue)
{
int r = memberAdd(opvalue);
std::cout << "Result is " << r << std::endl;
}
private:
int a;
int memberAdd(int v)
{
return v + a;
}
};
int Add(int v)
{
return v+1;
}
int main()
{
Test test(5);
test.templateOp<Add>(2);
test.nonTemplateOp(4);
}