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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Шаблон класса 
:(
    Опции темы
Earnest
Дата 19.12.2005, 17:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

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



Если это не учебная задача, а практическая, лучше использовать готовое решение, например boost::function + boost::bind.
Все-таки это чисто техническая задача, и тратить время на ее решение (когда она уже решена так мощно, как в бусте), не целесообразно.
Стоит только посмотреть на бустовский код, чтобы понять трудозатраты на разработку подобных вещей...
Не обязательно использовать именно boost, есть еще Loki и другие подобные библиотеки.


--------------------
...
PM   Вверх
zss
Дата 19.12.2005, 20:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



да вроде результат достигнут.
а по boosr у меня нет инфы
PM MAIL ICQ   Вверх
ParaPik
Дата 8.1.2009, 18:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Добрый вечер.
У меня один пробел остался с использованием шаблонов. Даже в книгах Страуструпа не нашел ответа.
Я хочу спецализировать конструктор в классе. Я могу написать вот так:
Код

template <class T, class S>
class My_class
{
 //...
};
template <>
My_class<int, double>::My_class()
{
}

Но если пишу так:
Код

template <class S>
My_class<int, S>::My_class()
{
}

компилятор пишет, что нужно написать специализацию всего класса.  Пожалуйста поясните, как можно быстрее.
PM MAIL   Вверх
vinter
Дата 8.1.2009, 19:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

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



Здравствуйте, добро пожаловать на форум!

частичная специализацию функций запрещена(если мне память не изменяет).



Это сообщение отредактировал(а) vinter - 8.1.2009, 19:00


--------------------
Мой блог
PM MAIL WWW   Вверх
mes
Дата 8.1.2009, 19:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

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



Цитата(vinter @  8.1.2009,  18:00 Найти цитируемый пост)
частичная специализацию функций запрещена(если мне память не изменяет).

используйте перегрузку, вместо частичной специализации


--------------------
PM MAIL WWW   Вверх
UnrealMan
Дата 8.1.2009, 21:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(mes @  8.1.2009,  19:02 Найти цитируемый пост)
используйте перегрузку, вместо частичной специализации

Гениальный совет smile
Покажи же, как сие чудо будет выглядеть применительно к

Код
template <class S>
My_class<int, S>::My_class() /* здесь может быть список инициализации */
{
    /* здесь может быть тело конструктора */
}



PM MAIL   Вверх
ParaPik
Дата 8.1.2009, 22:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Т.е. либо специализировать полностью функцию, либо специализировать весь класс. А случайно никто не знает, почему Страуструп решил так спроектировать использование шаблонов?(какова причина)
PM MAIL   Вверх
ParaPik
Дата 10.1.2009, 12:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Как я понимаю таких данных ни у кого нет. А случайно в стандарте не будет ответа на мой вопрос?
PM MAIL   Вверх
vinter
Дата 10.1.2009, 13:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

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



Цитата(ParaPik @  10.1.2009,  13:23 Найти цитируемый пост)
А случайно в стандарте не будет ответа на мой вопрос?

проще всего посмотреть самому, чем ждать, что это сделают за тебя.

Цитата(ParaPik @  8.1.2009,  23:39 Найти цитируемый пост)
А случайно никто не знает, почему Страуструп решил так спроектировать использование шаблонов?

С++ сейчас не является полностью творением Страуструпа, над С++ работает целый комитет по стандартизации. Если я ничег не путаю, то отсутсвие часьтичной специализации функций это недоразумение которое будет исправлено в С++09


--------------------
Мой блог
PM MAIL WWW   Вверх
mes
Дата 10.1.2009, 13:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

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



Цитата(UnrealMan @  8.1.2009,  20:07 Найти цитируемый пост)
Покажи же, как сие чудо

Вероятно опять неправильно оценили высказывание:

Цитата(mes @  8.1.2009,  18:02 Найти цитируемый пост)
используйте перегрузку, вместо частичной специализации 

оно не говорит, что перегрузка заменит во всем специализацию,
а о том, что при разработке автоматизацию следует искать в перегрузке, а не частичной специализации.
И подход соответсвенно надо выбирать соответствующий. smile



Это сообщение отредактировал(а) mes - 10.1.2009, 13:37


--------------------
PM MAIL WWW   Вверх
UnrealMan
Дата 10.1.2009, 15:10 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(mes @  10.1.2009,  13:36 Найти цитируемый пост)
при разработке автоматизацию следует искать в перегрузке, а не частичной специализации.
И подход соответсвенно надо выбирать соответствующий.

Это ты сам придумал или вычитал из какой-нибудь статьи под названием "Советы пьяного ёжика"?
PM MAIL   Вверх
mes
Дата 10.1.2009, 15:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

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



Цитата(UnrealMan @  10.1.2009,  14:10 Найти цитируемый пост)
Это ты сам придумал или вычитал

Нельзя ли точней указать на тот момент, который вы подвергаете сомнению - иначе боюсь мы будем обсуждать разное. 



--------------------
PM MAIL WWW   Вверх
UnrealMan
Дата 10.1.2009, 16:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(mes @  10.1.2009,  15:21 Найти цитируемый пост)
Нельзя ли точней указать на тот момент, который вы подвергаете сомнению - иначе боюсь мы будем обсуждать разное.

Я могу подвергать сомнению только утверждения, смысл которых мне полностью ясен.
Ты так и не ответил на мой вопрос.
PM MAIL   Вверх
mes
Дата 10.1.2009, 19:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

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



Цитата(UnrealMan @  10.1.2009,  15:04 Найти цитируемый пост)
Ты так и не ответил на мой вопрос. 

Я не ответил, потому что не понял, о чем конкретно Вы спрашивуете smile
Исходя из вышесказанного, я лишь могу ответить : прямого цитирования чего либо там не было.

Добавлено через 1 минуту и 18 секунд
Цитата(UnrealMan @  10.1.2009,  15:04 Найти цитируемый пост)
смысл которых мне полностью ясен.

Ну а показать, где неясности в высказываниях возможно ?


--------------------
PM MAIL WWW   Вверх
UnrealMan
Дата 10.1.2009, 20:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(mes @  10.1.2009,  19:45 Найти цитируемый пост)
Я не ответил, потому что не понял, о чем конкретно Вы спрашивуете 

Я спрашивал о том, что утверждалось в процитированном тексте. Или там ничего не утверждалось? smile

Цитата(mes @  10.1.2009,  19:45 Найти цитируемый пост)
Ну а показать, где неясности в высказываниях возможно ? 

Цитата(mes @  10.1.2009,  13:36 Найти цитируемый пост)
при разработке автоматизацию следует искать в перегрузке, а не частичной специализации.

Какую автоматизацию?

Вот так твоя писанина выглядит со стороны: "при разработке бла-бла-бла следует искать в перегрузке, а не частичной специализации.
И подход соответсвенно надо выбирать соответствующий." Я могу лишь читать текст, который ты пишешь, но не могу угадывать твои мысли. Бесплатный совет: если хочешь, чтоб тебя понимали, при выражении своих мыслей в тексте попробуй поставить себя на место читателя, который не осведомлён насчёт твоих заморочек, потому что о них может быть известно только тебе. 

Это сообщение отредактировал(а) UnrealMan - 10.1.2009, 21:14
PM MAIL   Вверх
Страницы: (3) Все 1 [2] 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
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.0993 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


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

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