首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

模板返回一个类型不同的指针,需要如何实现?

2012-08-28 
模板返回一个类型不同的指针,需要怎么实现??template typename TT GetMVView(){if (1g_WhichMVIsOn){C

模板返回一个类型不同的指针,需要怎么实现??
template <typename T> 
T GetMVView()
{
if (1==g_WhichMVIsOn)
{
CMV1VIEW * pMV1View;
pMV1View=(CMV1VIEW*)((CMainFrame *)AfxGetMainWnd())->m_wndSplitter2.GetPane(0,0);  
return pMV1View;
}
else if (2==g_WhichMVIsOn)
{
CMV2VIEW * pMV2View;
pMV2View=(CMV2VIEW*)((CMainFrame *)AfxGetMainWnd())->m_wndSplitter2.GetPane(0,0);  
return pMV2View;
}
else if(3==g_WhichMVIsOn)
{
CMV3VIEW * pMV3View;
pMV3View=(CMV3VIEW*)((CMainFrame *)AfxGetMainWnd())->m_wndSplitter2.GetPane(0,0);  
return pMV3View;
}

}
如上所示,在g_WhichMVIsOn = 1,2,3时分别返回不同类型的指针,用模板该如何实现,我这样写去调用的时候总是error C2783: “T GetMVView(void)”: 无法为“<未知>”推导 <未知> 参数
求教高手?有其它方法也可以

[解决办法]
特化模板,为你的那几个分别特化几个单独的函数调用。或者使用你的这几个东西的父类作为模板的参数,然后返回也是可以的,不过这样怎么知道返回了哪种类型呢?
[解决办法]
简单的问题复杂化了。你这样的问题,该用虚函数的。
[解决办法]
1.宏很容易解决
2.map/数组 + cast function

热点排行