Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
nsl
1 / 1 / 0
Регистрация: 28.03.2011
Сообщений: 22
#1

В древности этим преподаватели якобы"убивали" зарвавшихся студентов - C++

15.12.2012, 12:34. Просмотров 1183. Ответов 28
Метки нет (Все метки)

Мне рассказали историю, что этот вопрос валил студентов напрочь

"напишите прототип функции, принимающей в качестве одного из своих аргументов, указатель на такую же функцию"
Вопрос - это задание имеет смысл?
Можно ли его выполнить.
И в чем подвох?
Может это просто бессмыслица?

Так как мне в такой теоретической постановке ничего подобного делать не приходилось.
Подскажите пожалуйста.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.12.2012, 12:34     В древности этим преподаватели якобы"убивали" зарвавшихся студентов
Посмотрите здесь:
C++ Обработка структур "Преподаватели"
что дальше? (программа вводит информацию из ведомости и печатает фамилии студентов, учащихся на "4". "5" и их процентное соотношение с другими) C++
Результаты сдачи экзамена группой из N сту-дентов находятся в массиве REZ. Подсчитать количество студентов, сдавших экзамен на "хорошо" и "отлично" C++
Не компилируется, ошибки: "отсутствует оператор, соответствующий этим операндам" C++
C++ "Отсутствует оператор >> соответствующий этим операндам" - в чем ошибка?
Ошибка: отсутствует оператор "<<", соответствующий этим операндам C++
Ошибка: отсутствует оператор "==", соответствующий этим операндам C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kastaneda
Форумчанин
Эксперт С++
4479 / 2841 / 227
Регистрация: 12.12.2009
Сообщений: 7,224
Записей в блоге: 1
Завершенные тесты: 1
15.12.2012, 19:19     В древности этим преподаватели якобы"убивали" зарвавшихся студентов #21
Nick Alte, первый раз вижу такой typedef
C++
1
typedef void foofunc(footype);
что-то не догоняю, как можно создать экземпляр (не указатель) этого типа?
Toshkarik
1139 / 856 / 51
Регистрация: 03.08.2011
Сообщений: 2,384
Завершенные тесты: 1
15.12.2012, 19:34     В древности этим преподаватели якобы"убивали" зарвавшихся студентов #22
Kastaneda, как я понял, создается простой прототип функции.
Например:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
typedef void foo( int );
 
int main() {
   foo b;
 
   b( 10 );
 
   return 0;
}
 
void b( int num ) {
   std::cout << num << std::endl;
}
Добавлено через 1 минуту
EDIT: наверно правильнее будет сказать создается сигнатура а не прототип.
Kastaneda
15.12.2012, 20:44
  #23

Не по теме:

Ну да, что-то сам не додумался. Век живи - век учись

Nick Alte
Эксперт С++
1608 / 1000 / 118
Регистрация: 27.09.2009
Сообщений: 1,927
Завершенные тесты: 1
15.12.2012, 21:20     В древности этим преподаватели якобы"убивали" зарвавшихся студентов #24
Цитата Сообщение от Kastaneda Посмотреть сообщение
как можно создать экземпляр (не указатель) этого типа?
Экземпляр (с телом функции) нельзя, но в данном случае оно нам и не надо, достаточно указателей/ссылок/объявлений.
nsl
1 / 1 / 0
Регистрация: 28.03.2011
Сообщений: 22
16.12.2012, 10:52  [ТС]     В древности этим преподаватели якобы"убивали" зарвавшихся студентов #25
Все таки удалось от моего собеседника добиться МУ, он утверждает что условиям соответствует всего лишь одна строчка кода. И с видом павлина удалился.:-)

C++
1
void func(void (*)(...));
Честно говоря я смущен. Кто что может подсказать?
Nick Alte
Эксперт С++
1608 / 1000 / 118
Регистрация: 27.09.2009
Сообщений: 1,927
Завершенные тесты: 1
16.12.2012, 11:00     В древности этим преподаватели якобы"убивали" зарвавшихся студентов #26
Параметр - указатель на функцию, принимающую произвольный набор параметров. Указатель на саму эту func не может быть приведён к такому типу неявно, только через принудительный reinterpret_cast. То есть, мы не можем просто вызвать func(func);, приходится преобразовывать, а значит, это не решение. С тем же (на самом деле, даже с бОльшим) успехом можно было бы преобразовывать указатель на void func(unsigned long). С практической точки зрения, здесь открывается простор для всяких ошибок и неприятных вещей.
nsl
1 / 1 / 0
Регистрация: 28.03.2011
Сообщений: 22
16.12.2012, 11:10  [ТС]     В древности этим преподаватели якобы"убивали" зарвавшихся студентов #27
Дискуссия чисто теоретическая. Поэтому всем спасибо за участие.
Kastaneda
Форумчанин
Эксперт С++
4479 / 2841 / 227
Регистрация: 12.12.2009
Сообщений: 7,224
Записей в блоге: 1
Завершенные тесты: 1
16.12.2012, 13:01     В древности этим преподаватели якобы"убивали" зарвавшихся студентов #28
Цитата Сообщение от nsl Посмотреть сообщение
Все таки удалось от моего собеседника добиться МУ, он утверждает что условиям соответствует всего лишь одна строчка кода. И с видом павлина удалился.:-)

C++
1
void func(void (*)(...));
У меня была така мысль, но я не стал ее озвучивать. Потому что в условии сказано
"напишите прототип функции, принимающей в качестве одного из своих аргументов, указатель на такую же функцию"
и приведенный выше прототип ни как не соответствует поставленой задаче.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.12.2012, 13:34     В древности этим преподаватели якобы"убивали" зарвавшихся студентов
Еще ссылки по теме:
C++ Ошибка: отсутствует оператор ">>", соответствующий этим операндам типы операндов: std::is
C++ Отсутствует оператор "==", соответствующий этим операндам
Отсутствует оператор ">>", соответствующий этим операндам C++
C++ При переворачивании массивов выходят такие цифры: "-858993469". Как с этим бороться?
Нужна программа "Журнал посещения учеников/студентов/работников" C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
nsl
1 / 1 / 0
Регистрация: 28.03.2011
Сообщений: 22
16.12.2012, 13:34  [ТС]     В древности этим преподаватели якобы"убивали" зарвавшихся студентов #29
Цитата Сообщение от Kastaneda Посмотреть сообщение
У меня была така мысль, но я не стал ее озвучивать. Потому что в условии сказано

и приведенный выше прототип ни как не соответствует поставленой задаче.
В принципе мне и нужно было мнение сведующего специалиста, спасибо. Из дискуссии мне понятно, что мой собеседник просто что то подзабыл :-)
Yandex
Объявления
16.12.2012, 13:34     В древности этим преподаватели якобы"убивали" зарвавшихся студентов
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru