информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Где водятся OGRыЗа кого нас держат?Все любят мед
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Бэкдор в xz/liblzma, предназначенный... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
[C++] шаблоны - члены класса шаблона 11.06.01 16:24  Число просмотров: 978
Автор: kabanchik Статус: Незарегистрированный пользователь
<"чистая" ссылка>

если Т и ТТ у тебя разные типы, то так

template <typename T, typename TT>
struct B // тут не имеет принципиальной разницы, но лучше писать class B
{
void make(TT &t)
};

template <typename T, typename TT>
void B::make(TT& t)
{
}

И ТОЛКЬ ТАК !!!!
а то что ты в классе писал и он компилился, ето не значит, что он заравотал бы.
немного иной ситаксис для шаблонных ф-ий дружественным к шаблонному классу
<programming>
[C++] шаблоны - члены класса шаблона 11.06.01 14:36  
Автор: Yehor Статус: Незарегистрированный пользователь
<"чистая" ссылка>
все на BCB5 - ANSI C++ compliance

попробуем определить шаблонный метод класса шаблона:

template<typename T>
struct B
{
template<typename TT>
void make( TT& t );
};

вроде как надо: определение шаблонной функции вне класса:

template<typename T, typename TT >
void B<T>::make( TT& t )
{

}
А НЕ КОМПИЛИТСЯ. если определять ВНУТРИ класса, все проходит.

проблема с синтаксисом. Кто знает, как правильно?
[C++] шаблоны - члены класса шаблона 11.06.01 16:24  
Автор: kabanchik Статус: Незарегистрированный пользователь
<"чистая" ссылка>

если Т и ТТ у тебя разные типы, то так

template <typename T, typename TT>
struct B // тут не имеет принципиальной разницы, но лучше писать class B
{
void make(TT &t)
};

template <typename T, typename TT>
void B::make(TT& t)
{
}

И ТОЛКЬ ТАК !!!!
а то что ты в классе писал и он компилился, ето не значит, что он заравотал бы.
немного иной ситаксис для шаблонных ф-ий дружественным к шаблонному классу
[C++] [C++] шаблоны - члены класса шаблона 13.06.01 16:20  
Автор: Yehor Статус: Незарегистрированный пользователь
<"чистая" ссылка>
>
> если Т и ТТ у тебя разные типы, то так
>
> template <typename T, typename TT>
> struct B // тут не имеет принципиальной разницы, но лучше
> писать class B
> {
> void make(TT &t)
> };
>
> template <typename T, typename TT>
> void B::make(TT& t)
> {
> }
>
не знаю, какой компайлер это компилит... BCB5 воспринимает такое И ТОЛЬКО решение:
template<classT>
template<class TT>
void B<T>::make( TT& )
{}
[C++] уточнение 13.06.01 22:00  
Автор: kabanchik Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> >
> > если Т и ТТ у тебя разные типы, то так
> >
> > template <typename T, typename TT>
> > struct B // тут не имеет принципиальной разницы, но
> лучше
> > писать class B
> > {
> > void make(TT &t)
> > };
> >
> > template <typename T, typename TT>
> > void B::make(TT& t)
> > {
> > }
> >
^^^^^^^^^^^^^^^^^
тут я х..ню сморозил, невнимательность, надо так
template <typename T, typename TT>
void B<T, TT>::make(TT& t)
____^^^^^^^^^^
{
}

и это что для MS VC++, что для g++, и по моему везде так, ну во всяком случае у большинства.
а с борландом не работал, не знаю.
Вдогон: BC++ 5.02 шлет сии конструкции тем же лесом, но крышу у него не срывает как у gcc :) 13.06.01 19:21  
Автор: XR <eXtremal Research> Статус: The Elderman
<"чистая" ссылка>
template<classT>
template<class TT>
[C++] [C++] шаблоны - члены класса шаблона 13.06.01 18:54  
Автор: XR <eXtremal Research> Статус: The Elderman
<"чистая" ссылка>
> не знаю, какой компайлер это компилит... BCB5 воспринимает
> такое И ТОЛЬКО решение:
> template<classT>
> template<class TT>
> void B<T>::make( TT& )
> {}

Такую конструкцию gcc 2.91.66
шлет лесом ... да и ANSI
это вообще то

template <class T, class TT>

BTW:

template<class T1>
template<class T2>
class A {
T1 t1;
T2 t2;
public:
A(T1& T2&);
....

};


template<class T1>
template<class T2>
A<T1,T1>::A(T1& t1, T2& t2)
{

...

}


И вовсе срывает компайлеру крышу ... и это правильно :)
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach