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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вложенные функции, Как выкрутиться? 
:(
    Опции темы
v
Дата 19.7.2002, 12:06 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Привет всем. Я пересел на C++ недавно (раньше работал на паскале) и столкнулся с такой штукой - в паскале я могу описать функцию внутри другой функции (imho очень полезная фишка), но "С" этого не допускает... Вопрос - кто как из этого выпутывается?
  Вверх
Люда
Дата 19.7.2002, 12:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



А зачем тебе это, может можно по другому обойтись?  :notify
PM MAIL ICQ   Вверх
podval
Дата 19.7.2002, 12:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Где я? Кто я?
****


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

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



описывай не внутри  :)
PM WWW ICQ   Вверх
NetBird
Дата 19.7.2002, 12:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Действительно, иногда ну очень нужно, чтобы функция была видна только в одной или нескольких других функциях. Тут три выхода:
Первый: объявляй в каждой функции свою скрытую функцию, а её текст вставь в самый конец(исходника конечно).
Второй: Пишешь саму эту функцию, а за ней только те которые её используют.
Третий(самый естесттвенный): используй перегрузку функции и ни каких проблем.
Хотя всё зависит от поставленной задачи !
PM MAIL   Вверх
Fantasist
Дата 19.7.2002, 15:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лентяй
***


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

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



Есть еще один путь: создание класса и перегрузки у него оператора operator(), если это, конечно, все-таки С++ а не С.


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


Unregistered











Можно пользоваться пространствами имён namespace.
  Вверх
guest
Дата 29.7.2002, 10:33 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата(Fantasist @ 19.7.2002, 16:08)
Есть еще один путь: создание класса и перегрузки у него оператора operator(), если это, конечно, все-таки С++ а не С.

Идея эта не нова.  Называется она Functor.

Я нашел на google ответ обсуждающий этот вопрос:
http://groups.google.com/groups?....ink.net
  Вверх
Fantasist
Дата 29.7.2002, 12:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лентяй
***


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

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



Цитата
Идея эта не нова.  Называется она Functor.


Конечно не нова. Имено поэтому ее стоит упомянуть в первую очередь. Хотя опять же, все зависит от того, что хочешь добиться.

P.S. Посмотрел ссылку, по моему пример выдран целиком из книги Элджера.


--------------------
Волны гасят ветер...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

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

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


 




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


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

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