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





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
[C++] [C++] шаблоны - члены класса шаблона 13.06.01 16:20  Число просмотров: 885
Автор: 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& )
{}
<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