Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/12: Рейтинг темы: голосов - 12, средняя оценка - 4.67
быдлокодер
1719 / 906 / 106
Регистрация: 04.06.2008
Сообщений: 5,618
1

В функцию-метод передать указатель на другую функцию-метод и вызвать через переданный указатель

09.06.2011, 22:15. Просмотров 2502. Ответов 1
Метки нет (Все метки)

Друзья! Всем привет. Вот код:
C++
1
2
3
4
5
6
7
8
9
10
11
class otets {
 public:
  void f (void (otets::*p)());         
 private:
  void echo_f (){};            
};
 
 
void otets::f (void (otets::*p)()) {}         
 
int main () {}
Компилится, а вот так вот:
C++
1
void otets::f (void (otets::*p)()) {p();}
Не компилится.
Код упрощён донельзя, так-то бы безо всяких указателей работал, если бы просто одну функцию из другой надо было вызвать. Спасибо, кто поможет!

Добавлено через 45 минут
А компилятор пишет: надо использовать .* или ->* для вызова; это я понимаю, функция метод вызывается не сама по себе, а как член класса, но как воплотить это в жизнь- ума не приложу.

Добавлено через 22 минуты
Типа я нашёл ответ, как-то так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class otets {
 public:
  void f (void (otets::*p)(), otets& );         
 public:
  void echo_f (){};            
};
 
 
void otets::f (void (otets::*p)(), otets& ot ) {(ot.*p)();}         
int main () {
 void (otets::*p)()= &otets::echo_f;
 otets ot_;
 ot_.f(p, ot_);
}
Основное: мало аргументами передавать указатель на функцию, надо ещё передавать и объект. Такие дела.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.06.2011, 22:15
Ответы с готовыми решениями:

Как передать указатель на функцию через метод класса ?
typedef void (*FuncCallback)(float* flValue); Пробовал по всякому и ни как: Class.CallFunc...

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

Вызвать метод через указатель на метод
class MenuItem { public: MenuItem(string name, MenuItem *parent = nullptr,...

Как передать указатель функции в другую функцию?
Добрый вечер.:) Кто нибудь знает как передать указатель функции в другую? за ранее...

1
Эксперт С++
5041 / 3102 / 271
Регистрация: 11.11.2009
Сообщений: 7,047
09.06.2011, 22:43 2
Объект можно не передавать, в методе в любом случае есть указатель на объект (если метод не статический), this то бишь.

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
28
29
30
31
32
33
#include <iostream>
 
class Foo
{
public:
    void f1()
    {
        std::cout << "Call f1()" << std::endl;
 
        f2(&Foo::f3);
    }
 
    void f2(void (Foo::*func)())
    {
        std::cout << "Call f2()" << std::endl;
 
        (this->*func)();
    }
 
    void f3()
    {
        std::cout << "Call f3()" << std::endl;
    }
};
 
int main()
{
    Foo bar1;
 
    bar1.f1();
 
    return 0;
}
2
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.06.2011, 22:43

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Передать указатель из одной вызываемой функцию в другую
Прошу помощи. Надо указатель передать в одну функции(f1), а потом из этой функции передать этот же...

Вызвать функцию через указатель
Си Сделать указатель на функцию. И вызвать функцию через указатель. Функция линейного...

Не могу вызвать функцию через указатель
Есть функция void matrixsqr(int **a, int N, int M) как ее вызвать через указатель на функцию ...

Как вызвать функцию через указатель?
Привет всем! Помогите пожалуйста! Есть готовая рабочая программа, надо вызвать функцию через...


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

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

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