![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Jcs |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 156 Регистрация: 1.10.2003 Репутация: нет Всего: нет |
Как вынести определение функции за пределы описания класса? Заранее спасибо. |
|||
|
||||
| Дрон |
|
|||
![]() Java-ненавистник :) ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3179 Регистрация: 29.12.2002 Где: Санкт-Петербург Репутация: 10 Всего: 93 |
Если я правильно понял вопрос, то можно так:
-------------------- Да. Именно так. |
|||
|
||||
| Jcs |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 156 Регистрация: 1.10.2003 Репутация: нет Всего: нет |
Для всего класса мне необходим только один шаблонный параметр, за исключением функции cmp_def. Ведь можно же ее определить внутри описания класса, значит можно и вне его, просто , наверное, все дело в синтаксисе. Просто объявлять весь класс с двумя шаблонными параметрами из-за одной только функции кажется мне не совсем логичным, может быть стоит объявит ее дружественной... Но если ничего не получится, придется последовать предложенному способу. Спасибо за ответ.
|
|||
|
||||
| mr.DUDA |
|
||||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 25 Всего: 232 |
Нелогично. В данном случае ведь речь идёт не о классе, а о шаблоне класса - т.е. типизированном генераторе классов (компилятор порождает новый класс каждый раз при упоминании шаблона с новым параметром в треугольных скобках). Получается, что если заключить в пределы шаблона (или пусть даже обычного класса) шаблон функции, то выйдет "пирог внутри пирога" - компилятор запутается, сколько и каких классов ему генерировать при вызове функции (скажем cmp_ref) с тем или иным типом в треугольных скобках. З.Ы. по-всякому попытавшись объявить реализацию функции вне класса, у меня лично ничего не получилось:
-------------------- ![]() |
||||
|
|||||
| Jcs |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 156 Регистрация: 1.10.2003 Репутация: нет Всего: нет |
Действительно, компилятор пишет, что описание функции отличается от определения. Если использовать дружественную функцию
, то компилятор пропускает, но если у нас CSrtdData будет классом с закрытыми членами, то эта функция доступа к ним почему-то иметь не будет. Видимо из-за того, что не обязательно T в определении функции и ее описании будут одним и тем же. Придется использовать определение функции-члена внутри класса. |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |