我有一個調度員,其可以返回任何類型,需要的命令,並且一個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;
}
我收到一個錯誤,說不能從窗體轉換爲FormData。我帶走了模板,一切工作正常(但我需要的模板)
雖然對於沒有返回類型或表單數據的時候,只是一個命令,但是這個編譯失敗了,我想這肯定會是: 'code'dispatcher-> dispatch(LOGOUT,0) –
rem45acp
2012-04-20 22:55:41
@ rem45acp如果存在使用調度函數但函數的「switch(command)'部分不存在的情況,那麼可能可以將其餘部分拆分爲單獨的_dispatch_專用。 (將更新示例..) – 2012-04-20 23:04:43