【发布时间】:2017-09-06 16:14:40
【问题描述】:
我想为类传递一个模板函数 args 和该类的一个方法来调用。该方法有参数和返回值。
这是我目前所拥有的。我相信我对模板化的函数语法有点迷惑:
bar.h
class Bar {
public:
Bar();
int FuncBar(int arg1);
}
foo.h
template<typename A, int (A::*Method)()>
int FuncTemplate(A* a, int bar_arg1) {
....
return a->Method(bar_arg1)
}
class Foo {
public:
explicit Foo(Bar* bar);
private:
void FuncFoo();
Bar* bar_;
}
foo.cc
Foo::Foo(Bar bar) : bar_(bar) {};
void Foo::FuncFoo() {
...
int bar_arg1 = 0;
FuncTemplate<Bar, &(*bar_)::FuncBar>(bar_, bar_arg1);
}
【问题讨论】:
-
错误是什么,发生在哪里?
-
*a不是类型。你想要类似decltype(*a)或只是&A::FuncBar -
在 foo.cc 中,
a是什么? -
appologies,应该是吧_