Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Не-inline определение шаблонной функции 
:(
    Опции темы
Axxent
Дата 23.9.2006, 18:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 223
Регистрация: 25.3.2004
Где: Новосибирск

Репутация: 2
Всего: 5



Проблема возникла вроде бы достаточно тупая, но однако ж нигде ничего пока не нашел. Вот код:
Код

template <typename TYPE> class MyList
{
        template <typename TYPE> class Node
        {
        .......
        };
        .......
        Node<TYPE>* someMethod( TYPE& val )
        {
            .........
        }
};

Задача: вынести определение функции наружу, т.к. функция достаточно объемная и в виде inline как-то не смотрится. Пробовал так:
Код

template <typename TYPE> class MyList
{
        template <typename TYPE> class Node
        {
        .......
        };
        .......
        Node<TYPE>* someMethod( TYPE& val );
};

template <typename TYPE> MyList<TYPE>::Node<TYPE>* MyList<TYPE>::someMethod( TYPE& val )
{
     .........
}

Однако компилер сильно ругаецо - что-то про неуместное переопределение MyList<TYPE>::Node<TYPE>. Где я туплю? 

PS Если баян - будьте добры, поделитесь ссылкой, ей-богу искал, но не нашел.
PM MAIL ICQ   Вверх
MAKCim
Дата 23.9.2006, 19:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 52
Всего: 207



Во-первых шаблонный параметр TYPE в Node недопустим (shadow-параметр)
так что делай
либо так
Код

template <typename TYPE> class MyList
{
public:
        template <typename CLASS> class Node
        {
        .......
        };
        .......
        Node<TYPE> someMethod(TYPE&);
};

template<class TYPE> MyList<TYPE>::Node<TYPE> MyList<TYPE>::someMethod(TYPE& val)
{
}

или так
Код

template <typename TYPE> class MyList
{
public:
        class Node
        {
        .......
        };

        Node someMethod(TYPE&);
};

template<class TYPE> MyList<TYPE>::Node MyList<TYPE>::someMethod(TYPE& val)
{
}



--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
Axxent
Дата 23.9.2006, 19:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 223
Регистрация: 25.3.2004
Где: Новосибирск

Репутация: 2
Всего: 5



Спасибо большое, я уже сам нашел решение в виде второго варианта и хотел было снять вопрос в силу его тупости ))

Edit:
Впрочем решение получилось немного отличное - передавать на выход требовалось указатель:

Код

template <typename TYPE> class MyList
{
public:
        class Node
        {
        .......
        };

        Node* someMethod(TYPE&);
};

template <typename TYPE> typename MyList<TYPE>::Node* MyList<TYPE>::someMethod(TYPE& val)
{
}


Это сообщение отредактировал(а) Axxent - 23.9.2006, 19:42
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0423 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.