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

Делегат на C++03 - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Найти седловую точку целочисленной матрицы http://www.cyberforum.ru/cpp-beginners/thread753603.html
Найти седловую точку целочисленной матрицы с числом строк не более 12, числом столбцов не более 20. Найти произведение ненулевых элементов столбца, в котором окажется седловая точка. Формат числа +-ц.
C++ Метод Карацубы умножения длинных чисел Реализован клас длинных чисел, с перегруженными операциями сложения, вычитания, умножения столбиком и реализован метод умножения Карацубы. Оба умножения дают правильный ответ,но метод Карацубы работает в десятки раз дольше даже на числах которые состоят из больше чем 100 цифр, хотя он должен работать быстрее. В чем ошибка? Вот код: #include<iostream> #include<string> #include<vector>... http://www.cyberforum.ru/cpp-beginners/thread753599.html
Удаление строки в массиве C++
Не получается удалить строку в массиве int xy; //массив для хранения координат вершин на экране ... int q=0; // строка новой матрицы int s=0; // столбец новой матрицы int xynew; // сюда переписываем новый массив без удаленной вершины for(int i=0, q=0; i<kv; i++) { if (veryd==!i) // veryd номер строки которую надо удалить
Аргумент типа int не совместим с параметрами типа int* C++
помогите, ошибка в программе "аргумент типа int не совместим с параметрами типа int*" #include <stdio.h> #include <conio.h> #include <stdlib.h> #define k 5 int sum(int *a, int n) { if (n==1) return a; else return a+sum(a,n-1);
C++ Написать программу, которая находит в массиве значения, повторяющиеся два и более раз, и показывает их на экран http://www.cyberforum.ru/cpp-beginners/thread753582.html
Подскажите, пожалуйста, как вывести повторяющиеся два или более раз числа в массиве.
C++ Менеджмент жесткого диска при многопоточности Пусть у меня 4-ех ядерный процессор, и запущено 4 рабочих потока (в одном процессе). Казалось бы, что все хорошо, но диск-то у меня один! Есть какие- нибудь паттерны программирования многопоточных приложений, пытающихся "развести" потоки так, чтобы они одновременно не работали с жестким диском (или другими комплектующими)? Например, одинаковые потоки можно запускать со сдвигом по времени... подробнее

Показать сообщение отдельно
Whiteha
Программист
33 / 33 / 4
Регистрация: 08.07.2011
Сообщений: 190
Записей в блоге: 1
05.01.2013, 21:21     Делегат на C++03
Сойдет за простейшую реализацию делегата?
Файл Delegate.h:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <vector>
 
class Delegate
{
    std::vector<void(*)()> farr;
public:
    Delegate  ();
    ~Delegate ();
 
    bool operator()(void);
    bool operator +=(void (*pf)());
    bool operator -=(void (*pf)());
};
Файл Delegate.cpp:
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
#include "Delegate.h"
 
Delegate:: Delegate () {}
Delegate::~Delegate () {}
bool Delegate::operator()(void)
{
    bool ret_val = false;
    try
    {
        for (std::vector<void(*)()>::const_iterator curr_it = farr.begin(); curr_it != farr.end(); ++curr_it)
        {
            (*curr_it)();
        }
    }
    catch (...)
    {
        ret_val = true;
    }
    return ret_val;
}
bool Delegate::operator +=(void (*pf)())
{
    bool ret_val = false;
    try
    {
        farr.push_back(pf);
    }
    catch (...)
    {
        ret_val = true;
    }
    return ret_val;
}
bool Delegate::operator -=(void (*pf)())
{
    bool ret_val = false;
    try
    {
        for (std::vector<void(*)()>::iterator curr_it = farr.begin(); curr_it != farr.end(); ++curr_it)
        {
            if ((*curr_it) == pf)
            {
                farr.erase(curr_it);
                break;
            }
        }
    }
    catch (...)
    {
        ret_val = true;
    }
    return ret_val;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 09:43. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru