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

Передача функции из одного класса в функцию другого - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Ошибка 2 error LNK2019, не пойму в чем ошибка http://www.cyberforum.ru/cpp-beginners/thread1492131.html
Выдает такую ошибку: Ошибка 2 error LNK2019: ссылка на неразрешенный внешний символ "int __cdecl game(void)" (?game@@YAHXZ) в функции. Исходник прилагается. Спасибо за внимание.#include <stdio.h> #include <stdlib.h> #include <time.h> #include <windows.h> #include <conio.h> #include <ctype.h> #include <iostream> using namespace std;
C++ Определить разность между суммой элементов c четными индексами и суммой элементов, индексы которых кратны трем Дан массив вещественных чисел Z (16). Определить разность между суммой элементов c четными индексами и суммой элементов, индексы которых кратны трем http://www.cyberforum.ru/cpp-beginners/thread1492115.html
C++ Как найти точки пересечения двух синусоид?
Есть две синусоиды вида: y = a + b*sin(c*x + d) a,b,c,d - постоянные. x - в заданном интервале, допустим от -10 до +10. Нужно найти все точки пересечения. Подскажите, как их найти? (решите за меня уравнение и дайте финальный результат в символьном виде) :D
C++ Написать рекурсивную и нерекурсивную версию задачи о ханойской башне
Написать рекурсивную и нерекурсивную версию программы для нахождения последовательности перемещений колец в задаче о ханойских башнях. При реализации нерекурсивного алгоритма использовать стек отложенных заданий, элементами которого будут тройки (i,m,n). Каждая тройка интерпретируется как заказ "переложить i верхних дисков с m-го стержня на n-ый". Реализовать на С++
C++ Алгоритм быстрой сортировки http://www.cyberforum.ru/cpp-beginners/thread1492073.html
Написать программу, реализующую алгоритм быстрой сортировки(рекурсивный) для массива целых чисел.
C++ АТД "MyVector" - методы сортировки выбора и слияния Подскажите, что не так в методах сортировки выбора и слияния? Уточнение: в методе выбора (sort_case) - хз, полный; в слиянии(sort_merge и merge), вроде как происходит зацикливание, причина не понятна( P.S Все остальное нормально работает ... Спасибо заранее!!! И да, это не совсем АТД, но препода не переубедишь ... подробнее

Показать сообщение отдельно
Max Dark
В поиске работы
 Аватар для Max Dark
1546 / 1399 / 501
Регистрация: 09.10.2013
Сообщений: 3,185
Записей в блоге: 8
Завершенные тесты: 2
03.07.2015, 09:21     Передача функции из одного класса в функцию другого
Цитата Сообщение от Kastaneda Посмотреть сообщение
Вот так еще можно
ТС указал ограничение - C++98, а std::bind и std::function это уже C++11 и новее
Цитата Сообщение от Kastaneda Посмотреть сообщение
Кстати а что такое db
как я понял, это сокращение от double

ещё варианты
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
/*
Вариант с виртуальной функцией
*/
 
class base_task {
public:
    virtual double function(double) =0;
    virtual ~base_task() {};
};
 
class virt_task:public virt_task {
private:
    int a;
public:
    virt_task(int aa) { a = aa; }
    double function(double x) {
        return a*x;
    }
};
 
class virt_user {
public:
    double use(base_task task, double x1, double x2, double step) {
        double acc = 0.0;
        for(double x = x1; x <= x2; x += step)
            acc += task.function(x);
        return acc;
    }
    void calculate() {
        cout << use(virt_task(13), 0, 5, 0.1);
    }
};
 
/*
вариант с передачей указателя на функцию член
*/
class tmpl_task {
public:
    double some_function_name(double x) {
        return x * x;
    }
};
 
class tmpl_user {
public:
    // для вызова функции-члена нужно указать объект
    // к которому применяется вызов этой функции
    template<class Task>
    double use(Task task, double (Task::*function)(double), double x1, double x2, double step) {
        double acc = 0.0;
        for(double x = x1; x <= x2; x += step)
            acc += (task.*function)(x);
        return acc;
    }
    void calculate() {
        cout << use(tmpl_task(), &tmpl_task::some_function_name, 0, 5, 0.1);
    }
};
 
Текущее время: 22:02. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru