Как получить доступ к пользовательскому типу в базовом классе шаблона из производного класса? - PullRequest
2 голосов
/ 06 февраля 2012

Я создал шаблонный класс (TBase), который определяет другой класс (BaseUDT) в его теле.

#pragma once

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

Теперь я создаю класс (TDerived), производный от TBase.

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

Этот код компилируется в Visual Studio, но когда я пытаюсь скомпилировать его в Xcode на компьютере Mac, он выдает ошибки компиляции.Использование TBase :: BaseUDT также не работает.

Я пытался просмотреть документы ISO c ++, но до сих пор не нашел ничего актуального.

1 Ответ

1 голос
/ 06 февраля 2012

Его имя зависит - объявите его так:

template<class T>
class TDerived : public TBase<T>
{
public:
  T m_derived;
  typename TBase<T>::BaseUDT m_baseUDT;
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...