1
関数ポインタのテーブルを初期化する次のコードがあります。このテーブルは、入力ファイルが解析されるときに使用されます。テンプレートクラスの静的メソッドの関数ポインタ
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 }
};
ベースクラスのTorchModuleがテンプレートクラスの場合は、コードをどのように更新できますか?
template<MODE mode>
class TorchModule { ... };
template<MODE mode>
class TorchLinear : public TorchModule<mode> { ... };
template<MODE mode>
class TorchView : public TorchModule<mode> { ... };
あなたのやりたいことを明確にしません。 'TorchModule'はそのサブクラスにどのような影響を与えますか?テンプレートパラメータ 'mode'はどこで使用されますか? [mcve] –
を提供してくださいこれはまだ完全な**例ではありません。 'load_Object'はどこに格納されていますか?これはグローバル変数ですか?または別のタイプのメンバーですか?どこが初期化されていますか?現在の実装でそのマップをどのように使用するかを示します –