2012-02-06 99 views
2

我已经创建了一个模板类(TBase),它在其内部定义了另一个类(BaseUDT)。如何从派生类访问模板基类中的用户定义类型?

#pragma once 

template<class T> 
class TBase 
{ 
public: 
    class BaseUDT 
    { 
    public: 
     int a; 
    }; 
    T m_base; 
}; 

现在,我创建一个派生自TBase的类(TDerived)。

template<class T> 
class TDerived : public TBase<T> 
{ 
public: 
    T m_derived; 
    BaseUDT m_baseUDT; 
}; 

此代码编译在Visual Studio中,但是当我尝试编译它的Xcode在Mac机上,它抛出编译错误。使用TBase :: BaseUDT也不起作用。

我一直在尝试通过ISO C++文档,但仍然没有发现任何相关的东西。

回答

1

它的名字是依赖 - 这样声明:

template<class T> 
class TDerived : public TBase<T> 
{ 
public: 
    T m_derived; 
    typename TBase<T>::BaseUDT m_baseUDT; 
}; 
+0

它的工作原理。非常感谢。 – Anindo 2012-02-06 07:37:17

+0

@Anindo欢迎您 – justin 2012-02-06 07:46:41