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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ пользователь вводит число, вывести на экран его побитово http://www.cyberforum.ru/cpp-beginners/thread316898.html
Всем привет :) Подскажите плз как сделать вот это задание пользователь вводит число, вывести на экран его побитово Заранее спасибо)
C++ Решение СЛАУ в С++ Помогите с программой, пожалуйста. Задание: Решить СЛАУ A^2*X=Y^T, где A = ∣2 1 5 2| |5 2 2 6| |2 2 1 2| |1 3 3 1∣ , Y = http://www.cyberforum.ru/cpp-beginners/thread316892.html
C++ Система счисления
Написать программу в Delphi, обучающую переводу чисел из десятичной системы счиления в двоичную, из восьмиричной в двоичную, из шестнадцатиричной в двоичную и наоборот.
C++ Одномерные массивы на С!
помогите пожалуйста решить задачку на С.. В одномерном массиве, состоящем из п вещественных элементов, вычислить: 1) количество элементов массива, равных 0; 2) сумму элементов массива, расположенных после минимального элемента. Упорядочить элементы массива по возрастанию модулей элементов.
C++ Какой С++ лучше? http://www.cyberforum.ru/cpp-beginners/thread316877.html
Подскажите, какой С++ лучше выбрать для изучения. Я имею 2 книги: "Освой самостоятельно С++ за 21 день" 2010 год и "С++ Шаг за шагом" 2010 год. Чтобы можно было работать с этими книгами. Visual C++ 2010 или С++ 6.0 или ещё какой другой.
C++ оператор if, некорректно работает программа #include <iostream.h> #include <math.h> main () { int b; double z, x=0.63, c=1.5, d=2, a=0.37; cout << "Vvedite znachenie B" << endl; cin >> b; подробнее

Показать сообщение отдельно
kravam
быдлокодер
1694 / 881 / 44
Регистрация: 04.06.2008
Сообщений: 5,441

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

09.06.2011, 22:15. Просмотров 1625. Ответов 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_);
}
Основное: мало аргументами передавать указатель на функцию, надо ещё передавать и объект. Такие дела.
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru