61 / 5 / 0
Регистрация: 03.06.2013
Сообщений: 278
Записей в блоге: 2
1

Странный аргумент

12.08.2019, 19:26. Показов 336. Ответов 6
Метки нет (Все метки)

Добрый день

подскажите пожалуйста какой аргумент (какой даты/структуры/типа) нужно передовать для следующей функции


C++
1
2
void N(int (*ptr)(int)){}
N(?);
C++
1
2
void M(int (*ptr)(int*)){}
M(?);
я имею ввиду , вот например для такой
void NN(int i)
надо передать int например вот так
NN(5);

а вот для N и M ?
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.08.2019, 19:26
Ответы с готовыми решениями:

аргумент с++
профессионалы помогите пожалуста написать программу: Введите значение аргумента и вычислите...

Странный цикл for
А есть ли в природе компиляторы, которые пропускают вот такой код: array<int, 3> arr = {9, 8,...

Странный цикл for С++
Добрый день, ув. форумчане! Перехожу сейчас с Делфи на С++ и разбираюсь в сложнястях синтаксиса...

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

6
Don't worry, be happy
17149 / 10032 / 1933
Регистрация: 27.09.2012
Сообщений: 24,973
Записей в блоге: 1
12.08.2019, 19:28 2
Указатель на функцию.
0
567 / 406 / 132
Регистрация: 22.11.2017
Сообщений: 1,046
12.08.2019, 19:52 3
alexbmd, Croessmah правильно сказал. N и M - функции высшего порядка (принимают одну или более функций в качестве аргументов).
Как вариант сигнатуру таких функций можно записать так
C++
1
2
3
4
#include <functional>
...
void N(const function<int(int)>& f){...}
void M(const function<int(int*)>& f){...}
0
61 / 5 / 0
Регистрация: 03.06.2013
Сообщений: 278
Записей в блоге: 2
13.08.2019, 12:55  [ТС] 4
объясните пожалуйста почему две одинаковые функции типа int "видятся" компилятором по разному:
один раз как int (*)()
другой как int()
?
Кликните здесь для просмотра всего текста
fcnPtr специально объявлен не правильно чтоб увидеть что в него пытается записать компилятор

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int boo()
{
    return 7;
}
 
int doo()
{
    return 8;
}
 
int main()
{
    int *fcnPtr = boo; // error: cannot convert 'int (*)()' to 'int*' in initialization
    fcnPtr = doo; // error: cannot convert 'int()' to 'int*' in assignment
 }
0
567 / 406 / 132
Регистрация: 22.11.2017
Сообщений: 1,046
13.08.2019, 14:07 5
alexbmd, привет!
Напиши так и посмотри какие ошибки будут.
C++
1
2
int* fcnPtr = boo;
int* fcnPtr0 = doo;
Чтобы понять какой тип будет, ошибку не обязательно делать. Напиши так, наведи курсор и прочитай тип, который выводится автоматически.
C++
1
2
auto b = boo;
auto d = doo;
0
Модератор
Эксперт CЭксперт С++
4533 / 4172 / 765
Регистрация: 07.10.2015
Сообщений: 8,621
13.08.2019, 14:09 6
alexbmd, какой компилятор?
MS 2017 выдает:
значение типа "int (*)()" нельзя использовать для инициализации сущности типа "int *"
значение типа "int (*)()" нельзя присвоить сущности типа "int *"
0
61 / 5 / 0
Регистрация: 03.06.2013
Сообщений: 278
Записей в блоге: 2
13.08.2019, 16:02  [ТС] 7
GCC compiler 4.9. да если для второго тоже делать инициализацию таже ошибка что и для первого
я думал вне зависимости, это инициализация или присвоение, ошибка (как минимум касательно типов) всегда будет одна и таже.
судя по ответу liv это жестко зависит от компилятора и его версии
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.08.2019, 16:02

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Странный вывод
#include &lt;iostream&gt; #include &quot;conio.h&quot; typedef const double* (*p_fun)(const double *, int);...

Странный конструктор
class Int { private: int intez; public: ...

Странный код
Почему такой код верен time_t start, end; start = time(NULL); if (start == (time_t) - 1) {...

Странный поиск
как то странно работает функция find вот кусок кода: switch (count) { case 1:...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

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