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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Частичная специализация шаблонного метода класса, Синтаксис.Всегда ли част. спец. класс? 
:(
    Опции темы
np9mi7
  Дата 1.6.2005, 17:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Добрый день.
Есть код:
Код

template <class  T, class P> class CTest
{
public:
    virtual P get() const;
};
template <class T,class P> P CTest<T,P>::get() const 
{
    return P();
}
template <class T> class CTest<T,float>
{
public:
    virtual float get() const;
};
template <class T> float CTest<T,float>::get() const
{
    return float();
}


Компилируется.

Компилятор VC++ 7.1. Хочеться специализировать метод get частично, без частичной спецификации класса перед этим, те:
Код

template <class  T, class P> class CTest
{
public:
    virtual P get() const;
};
template <class T,class P> P CTest<T,P>::get() const 
{
    return P();
}
/*template <class T> class CTest<T,float>
{
public:
    virtual float get() const;
};*/
template <class T> float CTest<T,float>::get() const
{
    return float();
}

Компилятор:
Цитата
l:\Source\test\template_metod_virt\template_metod_virt\template_metod_virt.cpp(23): error C2244: 'CTest<T,P>::get' : unable to match function definition to an existing declaration


Вопрос: Что я делаю не так? Или всегда перед частичной спецификацией метода класса необходимо частично специфицировать шаблон класса?


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


Шустрый
*


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

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



На данный момент в C++ нельзя частично специализировать шаблонные функции (как методы класса так и глобальные функции), разрешается только полная специализация. Но классы частично специализировать можно.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

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

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

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

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


 




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


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

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