我正在尝试在数组中预先创建模板成员函数,并使用运行时确定的值索引到该数组。该数组是一个指向Manager中模板函数的指针数组,我将专门研究它。我想从process :: send函数中调用其中一个函数。例如。
template<typename MatchT>
class Manager
{
public:
template <int P>
void do();
template<int P, int ...Ps>
struct table : table<P-1, P-1, Ps... >{};
template<int... Ps>
struct table <0, Ps...>
{
static constexpr void(*fns[])()={do<Ps>...};
};
};
template <typename MatchT>
template<int... Ps>
constexpr void(*Manager<MatchT>::table<0,Ps...>::fns[sizeof...(Ps)])();
//process.h
#include "Manager.H"
template<typename MatchT>
class Process
{
public:
void send(Manager<MatchT>& mgr );
private:
typename Manager<MatchT>::template table<5> _processtable;
};
//process.c
template<typename MatchT>
void Process<MatchT>::send(Manager<MatchT>& mgr)
{
ERROR here:
mgr.*_processtable::fns[1]();
}
错误是“_processtable不是类,命名空间或枚举”。