함수 포인터 테이블을 초기화하는 코드는 다음과 같습니다. 이 테이블은 입력 파일이 구문 분석 될 때 사용됩니다.템플릿 클래스의 정적 메서드에 대한 함수 포인터
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'가 저장되고 있습니까? 이 변수는 전역 변수입니까? 또는 다른 유형의 회원입니까? 초기화되는 위치는 어디입니까? ... 현재 구현에서이 맵을 사용하는 방법을 보여줍니다. –