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

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

Войти
Регистрация
Восстановить пароль
 
Виктор_Сен
32 / 25 / 1
Регистрация: 01.08.2011
Сообщений: 176
#1

Возврат функцией указателя на функцию - C++

08.10.2011, 19:06. Просмотров 466. Ответов 3
Метки нет (Все метки)

Всем привет! У меня возникла такая проблема: класс имеет поле-указатель на функцию. В методе, который осуществляет доступ к этуму полю, нужно возвращать его значение. Но как это синтаксически оформить? Вот само поле:
C++
1
void (*memUseControl)(int);
, с этим проблем нет, вот так пробовал описать метод доступа:
C++
1
(void *)(int) getMemUseControl();
, но не помогло, пробовал ещё разные варианты...

Добавлено через 3 минуты
С установкой поля тоже проблем нет:
C++
1
void setMemUseControl(void (*memUseControl)(int));
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.10.2011, 19:06     Возврат функцией указателя на функцию
Посмотрите здесь:

C++ Возврат указателя на строку из фукнции
Возврат указателя на массив из функции C++
Возвращение функцией массива (или указателя на массив) C++
C++ Происхродит ли здесь возврат указателя на не действительную память?
C++ Возврат указателя
Возврат указателя на массив указателей C++
Возврат в функцию C++
Возврат функцией массива структур C++
Возврат функцией экземпляра класса C++
Возврат указателя на массив из функции C++
C++ Возврат указателя на локальный объект
C++ Visual c++ возврат указателя, return *char

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
lemegeton
2917 / 1346 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
08.10.2011, 20:36     Возврат функцией указателя на функцию #2
Чтобы не путаться, опишите тип с помощью typedef.
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
#include <iostream>
 
class Check {
 public:
  typedef void (*functionPointer)(int);
  void setMemUseControl(functionPointer memUseControl) {
    memUseControl_ = memUseControl;
  }
  functionPointer getMemUseControl() const {
    return memUseControl_;
  }
 private:
  functionPointer memUseControl_;
};
 
void memUseControl(int a) {
  std::cout << "Mem use control: " << a << std::endl;
}
 
int main(int argc, char *argv[]) {
  Check check;
  check.setMemUseControl(memUseControl);
  check.getMemUseControl()(1);
  Check::functionPointer memControl = check.getMemUseControl();
  memControl(2);
}
Deviaphan
Делаю внезапно и красиво
Эксперт C++
1286 / 1220 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
08.10.2011, 20:40     Возврат функцией указателя на функцию #3
Цитата Сообщение от Виктор_Сен Посмотреть сообщение
(void *)(int) getMemUseControl();
void(*)(int) getMemUseControl();

Скобочки имеют значение. Но лучше через typedef, как в примере выше.
Виктор_Сен
32 / 25 / 1
Регистрация: 01.08.2011
Сообщений: 176
08.10.2011, 21:00  [ТС]     Возврат функцией указателя на функцию #4
С typedef работает, а с void(*)(int) getMemUseControl(); не работает
Yandex
Объявления
08.10.2011, 21:00     Возврат функцией указателя на функцию
Ответ Создать тему
Опции темы

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