如何从派生类访问模板基类中的用户定义类型?

时间:2012-02-06 07:03:15

标签: c++ xcode templates inheritance

我创建了一个模板类(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上编译但是当我尝试在Mac机器上的Xcode上编译它时,它会抛出编译错误。使用TBase :: BaseUDT也不起作用。

我一直试图通过ISO c ++文档,但到目前为止还没有发现任何相关内容。

1 个答案:

答案 0 :(得分:1)

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

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