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

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

Войти
Регистрация
Восстановить пароль
 
HardMorg
3 / 26 / 3
Регистрация: 29.08.2010
Сообщений: 204
#1

указатель на функцию - C++

14.03.2012, 22:52. Просмотров 383. Ответов 5
Метки нет (Все метки)

есть одна функция которая принимает указатель на функцию.

я пытаюсь так сказать применить механиз MVC и все скрывать в классах, но как передать функции(не моя) указатель на функцию.

вообщем я наверное невнятно обьяснил:

C++
1
2
3
4
5
6
7
8
9
10
11
class A {
    static void f(void) { }
};
 
void f(void) { }
 
void otherfunc() {
    
    func(f);   // понятно что так все работает
    func(A::f);  // а так нет
}
что можно придумать?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.03.2012, 22:52
Здравствуйте! Я подобрал для вас темы с ответами на вопрос указатель на функцию (C++):

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

В функцию-метод передать указатель на другую функцию-метод и вызвать через переданный указатель - C++
Друзья! Всем привет. Вот код: class otets { public: void f (void (otets::*p)()); private: void echo_f (){}; ...

Функция, получающая указатель на обычную функцию, получает указатель на метод класса - C++
Здравтсвуйте. Имеется вопрос по указателям на методы класса. Допустим, есть функция( f ), которая принимает указатель на функцию и...

Передача умного указателя в функцию принимающую указатель на указатель - C++
Итак имеется функция со следующим параметром: HRESULT __stdcall Function(SomeClass **param); В случае, когда создаём обычный...

Передать в неуправляемую функцию указатель на указатель - C++
Неуправляемая функция типа FUNC(int ** r); Делаю так fixed (int* ptr = arr) { FUNC((int **)ptr); ...

Указатель на функцию возвращающую указатель - C++
Всем привет. Подскажите, пожалуйста, пример не очень сложной программы, в которой встречается указатель на функцию, принимающую параметр...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Jupiter
Каратель
Эксперт С++
6553 / 3973 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
14.03.2012, 22:54 #2
что за func ? покажи весь код
HardMorg
3 / 26 / 3
Регистрация: 29.08.2010
Сообщений: 204
14.03.2012, 23:04  [ТС] #3
Цитата Сообщение от Jupiter Посмотреть сообщение
что за func ? покажи весь код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
static void create_window() {
 
    //  glutInit(::argc, argv);
        glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);
        glutInitWindowSize(400, 400);
        glutInitWindowPosition(100, 100);
        glutCreateWindow("Snake");
        glClearColor(0, 0, 0, 1);
 
        glMatrixMode(GL_PROJECTION);
        glLoadIdentity();
        
        glOrtho(0, 10, 0, 10, 0, 10);
        glutDisplayFunc(Game::game);
 
        glutMainLoop();
    
}
тут конечно говнокод, но смысл в том что функция glutDisplayFunc принимает указатель на функцию которая ничего не возвращает и у которой нету аргументов( статик функцию она не принимает), я хочу сделать так сказать 3 основных класса, класс которых хранит данные, класс в котором логика программы и класс вид в котором
создаю окно и вызываю статическую функцию класса в котором заложена сама логика.
Jupiter
Каратель
Эксперт С++
6553 / 3973 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
14.03.2012, 23:28 #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <iostream>
 
class foo {
public:
   static void f();
};
 
void foo::f()
{
   std::cout << "foo::f()\n";
}
 
void test()
{
   std::cout << "test()\n";
}
 
void func(void (*f)())
{
   f();
}
 
int main()
{
   func(foo::f);
   func(test);
}
DU
1483 / 1059 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
15.03.2012, 00:21 #5
Ну да. Похоже ТС просто забыл сделать передаваемую функцию публичной.
И еще. Не компилируется и не работает - это не одно и то же. не работает предполагает что скомпилилось, но не работает в рантайме.
HardMorg
3 / 26 / 3
Регистрация: 29.08.2010
Сообщений: 204
15.03.2012, 00:27  [ТС] #6
Цитата Сообщение от Jupiter Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <iostream>
 
class foo {
public:
   static void f();
};
 
void foo::f()
{
   std::cout << "foo::f()\n";
}
 
void test()
{
   std::cout << "test()\n";
}
 
void func(void (*f)())
{
   f();
}
 
int main()
{
   func(foo::f);
   func(test);
}
Спасибо, вообщем я разобрался я сам там натупил
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.03.2012, 00:27
Привет! Вот еще темы с ответами:

Работа с файлом (передать указатель на файл в функцию, вернуть указатель на файл из функции) - C++
Подскажите как передать указатель на файл в функцию, как вернуть указатель на файл из функции. void Open() // из этой функции вернуть...

Как передать параметр типа "указатель на указатель" в функцию? - C++
#include &quot;stdafx.h&quot; #include &lt;conio.h&gt; #include &lt;iostream&gt; using namespace std; #include &lt;iomanip&gt; using std::setiosflags; ...

Зачем передавать в функцию X указатель на callback функцию, если последняя ВНЕШНЯЯ и вызовется БЕЗО ВСЯКОГО УКАЗАТЕЛЯ? - C++
Собсно. То есть ребята, вот пример отсюда: http://www.cplusplus.com/reference/algorithm/count_if/ // count_if example #include...

Передача массива в функцию используя указатель на функцию - C++
У меня имеется готовая программа без передачи функции в функцию указателем, мне нужно передать функцию ввода масива в функцию его обработки...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
15.03.2012, 00:27
Ответ Создать тему
Опции темы

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