Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Определение шаблонного преобразующего конструктора вне шаблонного класса

24K
25 февраля 2007 года
Игорь В.
4 / / 25.02.2007
Буду признателен, если поможете разобраться в следующей проблеме:
У меня не получается определит шаблонный преобразующий конструктор вне шаблонного класса.

Объявление класса:
Код:
namespace HP
{
   template<class T> class Autorelease  
   {
      public:
         template<class T2> explicit Autorelease(const T2 &);
         ~Autorelease();   
      private:
         Autorelease(const Autorelease<T> &);
         Autorelease<T>& operator=(const Autorelease<T> &);
    };
}

Я пробовал разные варианты определения преобразующего конструктора и в том числе следующие:

1)
 
Код:
template<class T, class T2> HP::Autorelease<T>::Autorelease(const T2 &)
{
   //...
}

При этом компилятор выдавал ошибку
error C2244: 'HP::Autorelease<T>::Autorelease<T>::Autorelease<T>' : unable to resolve function overload.

 
Код:
2)
template<class T, class T2> HP::Autorelease<T>::Autorelease<T2>(const T2 &)
{
   //...
}

Ошибка
error C2143: syntax error : missing ';' before '<'.


Компилятор: MS VC 6.0.
309
26 февраля 2007 года
el scorpio
1.1K / / 19.09.2006
Методом научного тыка был найден рабочий вариант
 
Код:
template <class T> template <class X> void __fastcall TClass<T>::Method (const X &Param)
{
//...
}

Вызывается просто
 
Код:
Object.Method (ParamX);

В зависимости от типа параметра, формируется конкретная реализация кода метода класса.

Среда Borland C++ Builder 6, но и для других должно подойти
24K
27 февраля 2007 года
Игорь В.
4 / / 25.02.2007
Похоже, старенькая VS 6.0 совсем плохо с шаблонами дружит. - Ей и такой вариант не понравился. :)
Поробовал на работе на gcc - все ОК.
Спасибо за помощь!
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог