모든 형식을 반환 할 수있는 디스패처가 있고 명령과 FormData 개체가 있습니다. 아이디어는 특정 물건 주위를 지나갈 때 FormData로부터 상속 받기를 원한다는 것입니다.템플릿 함수 매개 변수 상속
struct FormData {};
struct Form : FormData {};
void login(const Form *f){}
enum Command
{
LOGIN
};
template <typename T>
T dispatch(const Command command, const FormData *f)
{
switch (command)
{
case LOGIN: login(f);
}
return T();
}
int main()
{
Form f;
dispatch<void>(LOGIN, &f);
return 0;
}
Form에서 FormData로 변환 할 수 없다는 오류가 발생합니다. 내가 템플릿을 빼앗아, 모든 것이 잘 작동 (하지만 템플릿이 필요) 귀하의 FormData
클래스는 기본 클래스, Form
파생되는
반환 유형 또는 양식 데이터가없는 경우에는 명령 일 뿐이므로 컴파일이 실패합니다. 다음과 같이 생각했습니다. 'code'dispatcher-> dispatch (LOGOUT, 0) –
rem45acp
@ rem45acp 디스패치 기능을 사용하지만 기능의 'switch (command)'부분이 아닌 경우, 나머지 부분을 _dispatch_의 별도 특수화로 나눌 수 있습니다. (예를 업데이 트합니다 ..) –