| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Вложенные функции |
| Автор: v 19.7.2002, 12:06 |
| Привет всем. Я пересел на C++ недавно (раньше работал на паскале) и столкнулся с такой штукой - в паскале я могу описать функцию внутри другой функции (imho очень полезная фишка), но "С" этого не допускает... Вопрос - кто как из этого выпутывается? |
| Автор: Люда 19.7.2002, 12:12 |
| А зачем тебе это, может можно по другому обойтись? |
| Автор: podval 19.7.2002, 12:31 |
| описывай не внутри |
| Автор: NetBird 19.7.2002, 12:57 |
| Действительно, иногда ну очень нужно, чтобы функция была видна только в одной или нескольких других функциях. Тут три выхода: Первый: объявляй в каждой функции свою скрытую функцию, а её текст вставь в самый конец(исходника конечно). Второй: Пишешь саму эту функцию, а за ней только те которые её используют. Третий(самый естесттвенный): используй перегрузку функции и ни каких проблем. Хотя всё зависит от поставленной задачи ! |
| Автор: Fantasist 19.7.2002, 15:08 |
| Есть еще один путь: создание класса и перегрузки у него оператора operator(), если это, конечно, все-таки С++ а не С. |
| Автор: umator 21.7.2002, 21:43 |
| Можно пользоваться пространствами имён namespace. |
| Автор: guest 29.7.2002, 10:33 | ||
Идея эта не нова. Называется она Functor. Я нашел на google ответ обсуждающий этот вопрос: http://groups.google.com/groups?hl=en&lr=&ie=UTF-8&oe=UTF-8&selm=L4MD8.1582%24wY5.1200%40nwrddc03.gnilink.net |
| Автор: Fantasist 29.7.2002, 12:41 | ||
Конечно не нова. Имено поэтому ее стоит упомянуть в первую очередь. Хотя опять же, все зависит от того, что хочешь добиться. P.S. Посмотрел ссылку, по моему пример выдран целиком из книги Элджера. |