С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.52/25: Рейтинг темы: голосов - 25, средняя оценка - 4.52
 Аватар для pcmax
443 / 74 / 7
Регистрация: 29.01.2018
Сообщений: 1,274

Указатель на функцию, которая принимает в качестве параметра указатель на массив

28.01.2019, 15:19. Показов 4758. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
я не понимаю. вроде делаю правильно, но выходит ошибка.

C++
1
2
3
4
есть функция. int foo(int *mas){};
cоздаю на нее указатель.
int (*p)(int *)=&foo;
вылетает ошибка
компилятор лопочит какую то херь про main.


решил задать вопрос на форуме.
если несложно в паре слов
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
28.01.2019, 15:19
Ответы с готовыми решениями:

Создать функцию, которая принимает указатель на массив и количество элементов
Люди! Огромная просьба помочь. Как сделать функцию, которая принимает указатель на массив и количество элементов и возвращает указатель на...

Как сделать функцию, возвращающую указатель на функцию (которая в свою очередь возвращает указатель на массив)
Изучаю c++ по одной книжке.Она говорить не умеет.. Так вот понадобилось написать функцию,которая как параметр получает указатель на...

Написать функцию, которая принимает указатель на небольшой 2х мерный массив int значениями
Подскажите пожалуйста, надо написать функцию, которая принимает указатель на небольшой 2х мерный массив int значениями (5 на 2) и сортирует...

12
611 / 416 / 151
Регистрация: 11.01.2019
Сообщений: 1,746
28.01.2019, 15:20
А можно весь код?
0
Mental handicap
 Аватар для Azazel-San
1246 / 624 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
28.01.2019, 15:24
Цитата Сообщение от pcmax Посмотреть сообщение
компилятор лопочит какую то херь про main
Вот ведь гад. Давайте погадаем на кофейной гуще что же он лопочит..

Добавлено через 1 минуту
Цитата Сообщение от pcmax Посмотреть сообщение
C++
1
int foo(int *mas){}; // и тут ; не нужна
если что
1
 Аватар для pcmax
443 / 74 / 7
Регистрация: 29.01.2018
Сообщений: 1,274
28.01.2019, 15:39  [ТС]
да, там я накалякал конечно же...
просто уже нет сил.

вобщем пока я не написал вот так
C++
1
int (*p)(int *);  а только потом не присвоил  p=&foo;

то вылетала ошибка. у меня такое чувство ,что компилятор делает что хочет.
он может обработать и запустить то что по сути работать не должно и может забраковать и выдать ошибку на пример из учебника. ему видите ли наверное не все авторы учебников нравятся. некоторые он компилирует, а другие нет.
0
Mental handicap
 Аватар для Azazel-San
1246 / 624 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
28.01.2019, 15:45
pcmax,
Цитата Сообщение от jugu Посмотреть сообщение
А можно весь код?
Вам не зря задали этот вопрос..
Цитата Сообщение от Azazel-San Посмотреть сообщение
Давайте погадаем на кофейной гуще что же он лопочит..
А это я к тому что и саму ошибку бы увидеть, в точности как выдал компилятор, а не ваш пересказ.
Цитата Сообщение от pcmax Посмотреть сообщение
что компилятор делает что хочет
Компилятор делает только то что он должен, а именно собирает то что ему дал программист в соответствии с правилами языка.
Цитата Сообщение от pcmax Посмотреть сообщение
он может обработать и запустить то что по сути работать не должно
Пруф?
Цитата Сообщение от pcmax Посмотреть сообщение
может забраковать и выдать ошибку на пример из учебника
Пример из учебника != правильный пример (не всегда покрайней мере).
Цитата Сообщение от pcmax Посмотреть сообщение
ему видите ли наверное не все авторы учебников нравятся
А может дело не в компилятор, а втом кто сидит по ту сторону экрана?
0
 Аватар для pcmax
443 / 74 / 7
Регистрация: 29.01.2018
Сообщений: 1,274
28.01.2019, 16:41  [ТС]
ну там вроде запустил.

сейчас уткнулся в указатель на метод класса.
если у Вас есть время, то посмотрите почему не получается
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
class foo{
public:
void func(void){std::cout <<"hi";}
 
};
 
int main(int argc, char*argv[]){
 
void(foo::*p)();//coздал указатель;
p ojb=&foo::func();//coздал объект и присвоил ему адрес метода
 
return 0;
}
дальше даже не пошел, ибо уже ошибка.
что не так?
0
611 / 416 / 151
Регистрация: 11.01.2019
Сообщений: 1,746
28.01.2019, 16:51
У вас указатель на функцию, которая ничего не принимает, а в классе функция с параметром типа void. Это несовместимые указатели. И кроме этого куча всего... В общем полная каша в голове ))

Добавлено через 4 минуты
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
using namespace std;
class foo {
public:
    void func(void) { std::cout << "hi"; }
 
};
 
typedef void(foo::*p_t)(void); //coздал указатель;
 
int main(int argc, char*argv[]) {
 
    foo f;
    p_t p = &foo::func;//coздал объект и присвоил ему адрес метода
 
    return 0;
}
Добавлено через 15 секунд
Указатель, кстати, получается на функции любых объектов класса foo, а не только одного.
1
Mental handicap
 Аватар для Azazel-San
1246 / 624 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
28.01.2019, 16:58
Лучший ответ Сообщение было отмечено pcmax как решение

Решение

pcmax,
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
 
struct Object {
    void foo() { std::cout << "Hello, world!\n"; }
};
 
int main()
{
    void (Object::*pfoo)() = &Object::foo;
    Object obj;
    (obj.*pfoo)();
}
Добавлено через 2 минуты
Цитата Сообщение от pcmax Посмотреть сообщение
ибо уже ошибка
Саму ошибку, так и не дано увидеть? Хотя она уже предсказуемая.
1
 Аватар для pcmax
443 / 74 / 7
Регистрация: 29.01.2018
Сообщений: 1,274
28.01.2019, 18:51  [ТС]
Цитата Сообщение от jugu Посмотреть сообщение
typedef void(foo::*p_t)(void); //coздал указатель;
скажите пожалуйста, а зачем тут typedef?
0
Mental handicap
 Аватар для Azazel-San
1246 / 624 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
28.01.2019, 18:56
Цитата Сообщение от pcmax Посмотреть сообщение
скажите пожалуйста, а зачем тут typedef?
Он не объязателен, ну и комментарий там не соответвует реальности. Если интересно почитайте о type definition - это оно и есть только для указателя на метод класса.
https://en.cppreference.com/w/cpp/language/typedef
1
611 / 416 / 151
Регистрация: 11.01.2019
Сообщений: 1,746
28.01.2019, 19:14
Цитата Сообщение от pcmax Посмотреть сообщение
скажите пожалуйста, а зачем тут typedef?
Чтобы ввести имя для типа указателя. Потом это имя можно использовать много раз.
1
285 / 176 / 21
Регистрация: 16.02.2018
Сообщений: 666
28.01.2019, 20:23
Цитата Сообщение от jugu Посмотреть сообщение
У вас указатель на функцию, которая ничего не принимает, а в классе функция с параметром типа void. Это несовместимые указатели.
Чё?
0
285 / 176 / 21
Регистрация: 16.02.2018
Сообщений: 666
30.01.2019, 02:38
Цитата Сообщение от jugu Посмотреть сообщение
У вас указатель на функцию, которая ничего не принимает, а в классе функция с параметром типа void. Это несовместимые указатели.
Разупорись
Цитата Сообщение от https://timsong-cpp.github.io/cppwp/n3337/dcl.fct#4
The parameter list (void) is equivalent to the empty parameter list.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
30.01.2019, 02:38
Помогаю со студенческими работами здесь

Указатель на функцию в качестве параметра функции
Доброго времени суток. Стоит задача - имеется функция, которая принимает 2 аргумента: 1 - указатель на функцию, 2 - параметр int ...

Указатель на функцию в качестве параметра функции
ln(1-x)+sinx необходимо создать программу демонстрирующую возможность использования указателя на некоторую функцию в качестве параметра...

Создать функцию EvenColReport, которая принимает в качестве параметра двумерный массив целых чисел (объявлен как указате
Создать функцию EvenColReport, которая принимает в качестве параметра двумерный массив целых чисел (объявлен как указатель) и его размер....

Нужно передать в качестве параметра указатель на массив
Нужно передать в качестве параметра указатель на массив. Я так понимаю, есть несколько способов это сделать. 1. С помощью указателя ...

Реализовать 3 функции, каждая из которых принимает указатель на массив и количество элементов и возвращает указатель на новый массив.
Пишу в Microsoft Visual Studio -&gt;Win32 Console application -&gt;C++. Условие:Реализовать 3 функции, каждая из которых принимает указатель на...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru