类成员方法作为模板函数参数

时间:2017-10-24 22:09:57

标签: c++ templates scope

我尝试使用类成员函数作为模板参数,在下面的代码中,我喜欢我的" 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);
}

0 个答案:

没有答案