crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Доступ к вложенным классам шаблонных класов
Count0
  опции профиля:
сообщение 14.7.2013, 12:29
Сообщение #1


Студент
*

Группа: Новичок
Сообщений: 17
Регистрация: 30.7.2011
Пользователь №: 2772

Спасибо сказали: 0 раз(а)




Репутация:   0  


Пытаясь реализовать слеующий код:
template <typename T>
class DataStructure
{
public:
    virtual inline ~DataStructure(){}
    friend class Iterator;
protected:
    inline DataStructure(){}

    class StructureElement : public SmartPointer<T>
    {
    public:
        virtual inline ~StructureElement()
        {
        }
    protected:
        inline StructureElement(const T& tData) : SmartPointer<T>(tData){}
        inline StructureElement(const SmartPointer<T>& spPrototype) : SmartPointer<T>(spPrototype){}

    };
};

template <typename T>
class Iterator
{
public:
protected:
    DataStructure<T>::StructureElement *m_steData;
};

натолкнулся на ошибку:
ошибка: type 'DataStructure<T>' is not derived from type 'Iterator<T>'
в строке:
DataStructure<T>::StructureElement *m_steData;

Не могу понять: в чем ее причина.
Заранее благодарю.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ilyabvt
  опции профиля:
сообщение 14.7.2013, 19:06
Сообщение #2


Активный участник
***

Группа: Участник
Сообщений: 297
Регистрация: 23.6.2011
Пользователь №: 2765

Спасибо сказали: 45 раз(а)




Репутация:   3  


Допишите ключевое слово typename:
typename DataStructure<T>::StructureElement *m_steData;

Без него компилятор не понимает что запись DataStructure<T>::StructureElement является именем типа. Подробнее см. Страуструп "Язык программирования C++" Приложение C 13.5

Сообщение отредактировал ilyabvt - 14.7.2013, 19:07
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 29.3.2024, 0:00