Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Поиск проблемы https://www.cyberforum.ru/cpp-beginners/thread336095.html
#include <iostream> #include <cstring> struct kk{ int k, s; }p; using namespace std; int main()
Отследить ввод с клавиатуры... C++
Доброго времени суток! Господа прошу помочь решить такую задачу: в консольном приложении нужно запретить ввод символов и цыфр, только буквы... Посоветовали мне "юзать getch()" но как его...
Аналог модуля Делфи в С++ C++
Соббсно, в теме и есть вопрос. Есть модуль в делфях, а что есть аналогичное в С++??? . У нас преподают паскаль и тут задача поступила небольшая - написать программку(неважно какую) , используя...
C++ массив string void func(string *mas) { //здесь } int main() { string s = { "one", https://www.cyberforum.ru/cpp-beginners/thread336072.html
C++ Дана квадратная матрица https://www.cyberforum.ru/cpp-beginners/thread336068.html
прога на Си помогите решить дана квадратная матрица порядка N (элементы не отрицательны) Получить вторую матрицу. Элемент второй матрицы=1 i+j если сумма индексов равна элементу =-1...
даны натуральные числа N C++
прога на Си помогите решить Даны натуральные числа N b1,...,bn. Вычислить f(b0)+f(b1)+....f(bn) f(x)= x^2; x...
перегрузка классов C++
Народ, всем привет:D!!! 2 дня тому назад писал код в которм необходимо было добавить в базовый и производный классы констуктор с дополнительными параметрами, сделал, компилятор показывает что нет...
C++ задания из книги Плаугера из "Standard C Library" Exercise 1.4. Write a version of assert.h and xassert.c that prints all assertions. Why would you want to use this version? Exercise 1.5. Write a handler for the signal... https://www.cyberforum.ru/cpp-beginners/thread336032.html
C++ выделить место для объекта с помощью new или создать указатель, объект и присвоить один другому. какая разница? https://www.cyberforum.ru/cpp-beginners/thread336030.html
кроме того что к объекту созданному с помощью new можно будет обращаться только через указатель.
C++ сортировка вставками Начал изучать Кормена. Написал первый алгоритм. Не сортируется первый элемент массива. Код написан по книге. #include<iostream> using namespace std; int main(){ int a; int i,j,key;... https://www.cyberforum.ru/cpp-beginners/thread336028.html
kravam
быдлокодер
1716 / 903 / 106
Регистрация: 04.06.2008
Сообщений: 5,588
0

Как в конструкторе класса передать параметром указатель на функцию?

25.07.2011, 20:59. Просмотров 4166. Ответов 5
Метки (Все метки)

Друзья! Вот тут всё понятно, есть класс, в котором приватная функция f_0, в конструкторе
передаётся указатель на функцию f_1. Эта функция (f_0 или f_1, у них одинаковые прототипы) будет использоваться в классе в дальнейшем, но мне её надо как-то в класс передать. Вот, передаю, не передаётся


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
template <typename T>
class klass {
 public:
  //Вот тут присваивание
  klass(void(*f)()){f_0= f;};
 private:
  void f_0 () {};
};
 
 
//Определение функции
template <class T>
void f_1 () {}
 
 
int main() {
 //А тут ругань
 klass<int> ob (f_1<int>);
 return 0;
}
То есть я хочу сделать аналог как бы, допустим, предикату. Вот например как здесь:
http://www.cplusplus.com/reference/algorithm/find_if/

Ну и сразу же, если вместо конструктора использовать обычную функцию (то есть без классов вообще), то всё передаётся хорошо:
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
#include <windows.h>
#include <stdio.h>
 
 
template <class T>
int osnovnaya_funktsia () {
 printf ("привет, дуралеи!\n"); 
}
 
 
int prosto_funktsia (int(*f)()){
 int(*f_)();
 f_= f;
 printf ("____привет, дуралеи!\n"); 
 f_();
};
 
 
int main () {
 SetConsoleCP(1251);
 SetConsoleOutputCP(1251);
 prosto_funktsia (osnovnaya_funktsia<int>);
 getchar ();
 return 0;
}
спасибо

Вернуться к обсуждению:
Как в конструкторе класса передать параметром указатель на функцию?
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.07.2011, 20:59
Готовые ответы и решения:

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

Как вызвать виртуальную функцию из дочернего класса, если она определена и вызывается в конструкторе РОДИТЕЛЬСКОГО класса?
Ну то есть так: есть родительский и дочерний класс, в родительском определен виртуальная функция и...

Недопустимый неполный тип , или как передать в функцию указатель на объект класса , или просто объект
Други мои , кодеры. Не могу я ни как передать в функцию объект класса , или что еще лучше(для меня...

Указатель на this в конструкторе класса
Добрый день! Есть некий синтетический пример: #include &lt;iostream&gt; #include &lt;memory&gt; class...

Указатель на функцию (как передать?)
void abc(int a, int b) { } void func(void *f(int, int)) { f; }

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