我有以下代码,我初始化一个函数指针表。解析输入文件时使用该表。
OncePerRequestFilter
如果基类TorchModule是模板类,我该如何更新代码。
class TorchModule { ... };
class TorchLinear : public TorchModule { ... };
class TorchView : public TorchModule { ... };
...
typedef std::shared_ptr<const TorchModule> ( *load_function )( File* file );
using table_type = std::map< std::string, load_function > table_type;
table_type load_Object = {
{"nn.Linear", &TorchLinear::load },
{"nn.View" , &TorchView ::load }
};
答案 0 :(得分:2)
您可以将表定义为模板类中的静态变量。
template<MODE mode>
using load_function = std::shared_ptr< const TorchModule<mode> > (*)( File* file );
template<MODE mode>
using table_type = std::map< std::string, load_function<mode> >;
template<MODE mode>
struct Table {
static table_type<mode> table;
};
template<MODE mode>
table_type<mode> Table<mode>::table = {
{"nn.Linear", &TorchLinear<mode>::load },
{"nn.View" , &TorchView<mode> ::load }
};
注意: