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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как один шаблонный класс сделать другом другого? 
V
    Опции темы
EvilsInterrupt
Дата 18.6.2012, 10:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Executables research
***


Профиль
Группа: Завсегдатай
Сообщений: 1019
Регистрация: 14.7.2007
Где: Железнодорожный, МО, Россия

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



Имеется два класса:

Код

template<typename Arch>
class CustomFormatUtils;

template<typename Arch>
class CustomFormat
{

friend  class  CustomFormatUtils<Arch>;


и:
Код

template<typename Arch>
class CustomFormatUtils : public boost::noncopyable
{


Цель: Объявить CustomFormatUtils другом для CustomFormat.

Приведенный код выше компилируется на MSVS 2008, но меня терзают сомнения на счет его корректности.

Главный вопрос темы: Синтаксически правильно ли написано в приведенном выше коде?

Это сообщение отредактировал(а) EvilsInterrupt - 18.6.2012, 10:29
PM MAIL WWW ICQ Jabber   Вверх
borisbn
Дата 18.6.2012, 10:57 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

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



Из стандарта
Код

template < class T > class task {

friend task <T >* preempt <T >( task <T >*);
template < class P > friend class frd ;
};

Цитата
because the friend preempt has an explicit template-argument <T>, each specialization of the task class template
has the appropriate specialization of the function template preempt as a friend

all specializations of the class template frd are friends

так что и твой вариант корректен и такой
Код
template<typename Arch>
class CustomFormat
{
template<typename >
friend  class  CustomFormatUtils;
};

т.е. все специализации утилзов будут френдами


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
EvilsInterrupt
Дата 18.6.2012, 12:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Executables research
***


Профиль
Группа: Завсегдатай
Сообщений: 1019
Регистрация: 14.7.2007
Где: Железнодорожный, МО, Россия

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



borisbn, 
Из твоего последнего куска кода, цитирую:
Код

template<typename >
friend  class  CustomFormatUtils;


После 'typename'  до закрывающееся '>' ничего не надо?
PM MAIL WWW ICQ Jabber   Вверх
borisbn
Дата 18.6.2012, 12:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

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



Цитата(EvilsInterrupt @  18.6.2012,  12:33 Найти цитируемый пост)
После 'typename'  до закрывающееся '>' ничего не надо? 

не обязательно (пруф - http://liveworkspace.org/code/42ebc4501179...debaee0de58eb0)
Всё равно этот параметр не используется для случая, когда ты говоришь, что все инстанциации будут друзьями


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
EvilsInterrupt
Дата 18.6.2012, 13:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Executables research
***


Профиль
Группа: Завсегдатай
Сообщений: 1019
Регистрация: 14.7.2007
Где: Железнодорожный, МО, Россия

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



Спасибо, пока вопрос считаю исчерпанным
PM MAIL WWW ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


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

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


 




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


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

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