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

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

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

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

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

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

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

Возврат указателя - C++
Написать функцию возвращающую ссылку на элемент глобального массива. #include <stdio> #include <conio> #include <iostream> ...

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

Возврат указателя на массив указателей - C++
Доброго времени суток. Есть программа, где куча методов должны работать с одни массивом указателей. Как мне сделать, чтобы в функции...

Возврат указателя на строку из фукнции - C++
Снова я пришел к вам со строками. Читаю "Как программировать на С++" и там везде пишут про инкапсуляцию, сокрытие данных. Так чтоб мы...

Возврат указателя на массив из функции - C++
День добрый, коллеги по цеху. Не откажите в нужде java программисту в познаниях нативного кода. Запутался я совсем в указателях. Как...

Возврат указателя на локальный объект - C++
Доброго дня! Заинтересовал процесс возврата указателя на локальный объек, а именно: char* fun() { char *ptr1 = "Hello world!"; ...

3
lemegeton
2925 / 1354 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
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);
}
1
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1305 / 1220 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
08.10.2011, 20:40 #3
Цитата Сообщение от Виктор_Сен Посмотреть сообщение
(void *)(int) getMemUseControl();
void(*)(int) getMemUseControl();

Скобочки имеют значение. Но лучше через typedef, как в примере выше.
0
Виктор_Сен
33 / 26 / 1
Регистрация: 01.08.2011
Сообщений: 176
08.10.2011, 21:00  [ТС] #4
С typedef работает, а с void(*)(int) getMemUseControl(); не работает
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.10.2011, 21:00
Привет! Вот еще темы с ответами:

Возврат указателя на массив из функции - C++
Здравствуйте. Пытаюсь вернуть указатель на массив из функции. #include &lt;iostream&gt; using namespace std; int*...

Visual c++ возврат указателя, return *char - C++
есть класс journal, Я передаю в char *name значение &quot;gfg&quot;, а возвращает от мне заименнованное значение name, только первый символ &quot;f&quot;. ...

Происхродит ли здесь возврат указателя на не действительную память? - C++
double *Gaus(double **Matix, double *Frees, int N) { double **DownRow; double *DownFree; int i; double **UpnRow; double...

Возврат функцией экземпляра класса - C++
Подскажите, будет ли корректной с точки зрения выделения памяти и всего прочего такая запись: MyObject fun(....) { myObject Obj =...


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

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

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