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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Частичная специализация шаблона, Шаблоном 
V
    Опции темы
azesmcar
Дата 26.1.2006, 19:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 81
Всего: 211



Код

class CNullType{};

template <class H, class T>
struct CTypeList
{
   typedef H Head;
   typedef T Tail;
};

template<class TL> struct CTypeListLength;

template<class H, class T>
struct CTypeListLength< CTypeList<H, T> >
{
   enum { value = 1 + CTypeListLength<T>::value };
};

template<>
struct CTypeListLength<CNullType>
{
   enum { value = 0 };
};


Этот код выдает ошибку
Цитата

template class has already been defined as a non-template class

хотя по идее не должен..что не так?

Заранее спасибо..

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


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4071
Регистрация: 11.1.2003
Где: Seattle, US

Репутация: 27
Всего: 165



Какой компилятор? Где точно ошибка? Комяу скомпилировал только так.


--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
MAKCim
Дата 26.1.2006, 22:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



здесь явно нет ошибок, хотя, может быть, она где-то в другом месте...


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

PM MAIL   Вверх
np9mi7
  Дата 26.1.2006, 23:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 553
Регистрация: 17.8.2003
Где: Volgograd, Russia

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



Код

template<class TL> struct CTypeListLength;

template<class H, class T> struct CTypeListLength;            /// вот она и ошибка


Это сообщение отредактировал(а) np9mi7 - 26.1.2006, 23:44


--------------------
"Я точно знаю то, что ничего не знаю..." Сократ.
evolution project
PM MAIL WWW ICQ MSN   Вверх
azesmcar
Дата 27.1.2006, 09:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 81
Всего: 211



Видимо мало данных предоставил smile думал у всех она выдается...

Компилятор Visual Studio 6.0, G++ пробовал оба...

ошибка
Цитата

template class has already been defined as a non-template class

на строке
Код

struct CTypeListLength< CTypeList<H, T> >


Цитата

template<class H, class T> struct CTypeListLength;            /// вот она и ошибка


да нет как раз, мне нужна спецификация для типа TL, TL должен быть типа CTypeList<H, T>
Все вроде бы должно работать, фигня какая то smile
Добавлено @ 09:15
Цитата

здесь явно нет ошибок, хотя, может быть, она где-то в другом месте...


другого места нет, это весь код...
PM   Вверх
np9mi7
Дата 27.1.2006, 10:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 553
Регистрация: 17.8.2003
Где: Volgograd, Russia

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



Цитата
да нет как раз, мне нужна спецификация для типа TL, TL должен быть типа CTypeList<H, T>
Все вроде бы должно работать, фигня какая то smile
, ты объявляешь класс с одним набором параметров, а потом определяешь его с другим набором параметров;


--------------------
"Я точно знаю то, что ничего не знаю..." Сократ.
evolution project
PM MAIL WWW ICQ MSN   Вверх
azesmcar
Дата 27.1.2006, 10:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 81
Всего: 211



Цитата

, ты объявляешь класс с одним набором параметров, а потом определяешь его с другим набором параметров;


Я объявляю его с тем же набором параметров...
Цитата

struct CTypeListLength< CTypeList<H, T> >


Это и есть частичная спецификация шаблона..которую как оказалось Visual C++ 6.0 не поддерживает...а в G++ выдавалась другая, похожая ошибка но по другой причине...

исправил уже smile

Код

#ifndef __CTYPELIST_H__
#define __CTYPELIST_H__

class CNullType{};

template <class H, class T>
struct CTypeList
{
        typedef H Head;
        typedef T Tail;
};

template<class TL> struct CTypeListLength;

template<class H, class T>
struct CTypeListLength< CTypeList<H, T> >
{
        enum { value = 1 + CTypeListLength<T>::value };
};

template<>
struct CTypeListLength<CNullType>
{
        enum { value = 0 };
};

#endif


код работает...всем спасибо..

Это сообщение отредактировал(а) azesmcar - 27.1.2006, 10:56
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
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.0471 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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