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

How to access a user defined type in a template base class from a derived class?

本文关键字:基类 用户 定义 类型 派生 访问      更新时间:2023-10-16

我创建了一个模板类(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++文档,但到目前为止还没有找到任何相关的内容。

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

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