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

Проблема с указателем на функцию - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Шифрование-Дешифрование - После дешифрования, текст "сползает" со своих мест http://www.cyberforum.ru/cpp-beginners/thread1223203.html
Добрый ночи! Понадобилось добавить режим шифрования-дешифрования в курсовую работу. Накидал для примера, где застрял с проблемой. Реализовал данный код: #include <iostream> #include <fstream> using namespace std;
C++ Возможно ли явное разрушение объекта класса? Код (класс матрицы) #include <iostream> #include <assert.h> using namespace std; class MATRIX_us{ private://V int counter; int row; http://www.cyberforum.ru/cpp-beginners/thread1223162.html
Непонятные символы в output.txt - кодировка C++
#include <iostream> #include <algorithm> #include <cmath> using namespace std; int main() { freopen("input.txt","r",stdin); freopen("output.txt","w",stdout); int a,b,d,e,c; cin>>a;
Определить, работают ли в фирме люди с одной из заданных фамилий C++
Известны фамилии всех 30 сотрудников фирмы и их адреса. Определить, работают ли в фирме люди с одной из фамилий: Кузин, Куравлев, Кудин, Кульков или Кубиков. В случае положительного ответа напечатать их адреса. Вот такую вот задачку задали в универе.
C++ Перегрузить оператор суммирования, не принадлежащий классу http://www.cyberforum.ru/cpp-beginners/thread1223138.html
Перегруженный оператор суммирования, который не будет пренадлежать классу и будет работать с 2 объектами двумерных классов (наверное массивов)
C++ Запись в базовый класс информации из наследников Написать перегруженный оператор преобразования типов который будет вытягивать из класса наследников нужную информацию и эту информацию записывать в базовый класс подробнее

Показать сообщение отдельно
LeraLem
0 / 0 / 0
Регистрация: 13.06.2014
Сообщений: 8
06.07.2014, 09:53     Проблема с указателем на функцию
Доброго времени суток, пишу приложение, которое реализует все функции АТД (двусвязный список).
Есть стандартная библиотека, есть функция в этой библиотеке
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 int DLWalk(DLLIST *List,
           int(*Func)(int, void *, void *),
           void *Args)
{
  DLLIST *ThisItem = List;
  int Result = 0;
 
  if(List != NULL)
  {
    for(ThisItem = DLGetFirst(List);
        0 == Result && ThisItem != NULL;
        ThisItem = ThisItem->Next)
    {
      Result = (*Func)(ThisItem->Tag,
                       ThisItem->Object,
                       Args);
    }
  }
  return Result;
}
проблема возникает с указателем на функцию
Указываю указатель на функцию
C++
1
int(*p)(int,STUDNUM *,char*);
STUDNUM - это структура типа:
C++
1
2
3
4
typedef struct Dvysv_spisok {
char name[40]; //имя студента
char nomer[40]; //номер студента
}STUDNUM;
Функция, на которую указывает p, должна сравнивать имя студента, введенное пользователем, с именем в структуре и при совпадении выводить номер студента( с поиском и выводом проблем нет).

p=&Poisk_nomera;//присваивает адрес функции Poisk_nomera указателю
int Poisk_nomera(int a, STUDNUM *ftU, char *ukaz){//сама функция

Проблема возникает, когда я пытаюсь передать указатель на функцию p в функцию стандартной библиотеки
C++
1
2
3
int DLWalk(DLLIST *List,
           int(*Func)(int, void *, void *),
           void *Args)
вот так передаю DLWalk(HeadSpisok,p,student);
компилятор ругается
D:\Tools\QtCreator\bin\ATD_Dvysv_spisok\mainwindow.cpp:528: ошибка: invalid conversion from 'int (*)(int, STUDNUM*, char*) {aka int (*)(int, Dvysv_spisok*, char*)}' to 'int (*)(int, void*, void*)' [-fpermissive]
i=DLWalk(HeadSpisok,p,student);
^
почему ругается,не могу понять, уже много что пыталась переделать, ничего путного не вышло(((
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 21:56. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru