VC ++ 2010模板typedef typename错误

时间:2011-03-02 09:56:27

标签: visual-studio-2010 visual-c++-2010 wtl visual-studio-templates

我正在尝试将项目迁移到VC ++ 2010 该项目包含文件TabbedMDI.h(由Danial Bowen提供),该文件给出错误“命名后跟'::'必须是该行的类或命名空间名称 “typedef typename TClient :: TTabCtrl TTabCtrl;”

代码片段如下

template <
    class T,
    class TClient = CTabbedMDIClient< CDotNetTabCtrl<CTabViewTabItem> >,
    class TBase = WTL::CMDIWindow,
    class TWinTraits = ATL::CFrameWinTraits>
class ATL_NO_VTABLE CTabbedMDIFrameWindowImpl :
    public WTL::CMDIFrameWindowImpl<T, TBase, TWinTraits >
{
public:
    // Expose the type of MDI client
    typedef typename TClient TClient;
    // Expose the type of tab control
    typedef typename TClient::TTabCtrl TTabCtrl;

// Member variables
protected:
    TClient m_tabbedClient;

1 个答案:

答案 0 :(得分:1)

使用VC2010 Express(WTL 8.1,来自WinDDK的ATL 8.00)编译来自Custom Tab Controls, Tabbed Frame and Tabbed MDI的Daniel的 SimpleTabbedMDIDemo 样本没有问题(显示重复除外)。 你的问题在别处。

<强> [编辑]
你使用最新的 TabbedMDI.h 吗?我有:

// History (Date/Author/Description):
// ----------------------------------
//
// 2005/07/13: Daniel Bowen
// - Namespace qualify the use of more ATL and WTL classes.
// - CTabbedMDIFrameWindowImpl:
//   * Add GetMDITabCtrl