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

Создать класс, содержащий вектор (vector) указателей на функции - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ описать иерархию классов http://www.cyberforum.ru/cpp-beginners/thread1051515.html
Помогите пожалуйста написать написать программу.ТЗ:Написать программу,в которой описана иерархия классов: ("ошибка доступа к памяти","математическая","деление на ноль","переполнение"). Наследники должны иметь поля содержащие дополнительные сведения об ошибке,если такие имеются.Продемонстрировать работу всех методов классов,предоставит пользователю выбор типа объекта для демонстрации.
C++ описать иерархию классов Помогите пожалуйста написать программу.ТЗ:Написать программу,в которой описана иерархия классов:средство передвижения (велосипед,автомобиль,грузовик).Базовый класс должен иметь поля для хранения средней скорости,названия модели и числа пассажиров,а также методы получения потребления топлива для данного расстояния и вычисление времени движения на заданное расстояние.Продемонстрировать работу всех... http://www.cyberforum.ru/cpp-beginners/thread1051511.html
Строка с пробелами (ввод и вывод) C++
Как вывести строку с пробелами? char domadres; own; if(sch<20) { cout<<"Домашний Адрес"<<endl; cin>>own.domadres; sch++; } for(int i=0;i<sch;i++)
Куда дальше? C++
Ситуация такая: дошел до такого этапа что не знаю в каком направлении дальше развиваться! Большая часть тем рассматриваемая в этом разделе не явл. затруднительной...ознакомился с Qt, SQL. Были мысли более глубже вникать в ту область, в которую попаду на первую работу:D....но ее пока что нету )) Так что на месте стоять нельзя нужно дальше развиваться. Если рассматривать список умений используемый...
C++ Не работает условие цикла http://www.cyberforum.ru/cpp-beginners/thread1051482.html
Здравствуйте! Есть программа: #include <iostream> using namespace std; main () { setlocale (0,""); float a, b, d; string c,e="д"; do {cout<<"Введите первое число и второе число через пробел: "; cin>>a;
C++ Хвост змейки Всем привет! Прошу вашей помощи, начал писать змейку на c, всё было хорошо, пока не встал вопрос насчёт хвоста, алгоритм в голове есть, но не могу это программно закрепить. Вот фрагмент кода, если вас не затруднит, напишите для хвоста функцию, отталкиваясь от этого кода: #include <iostream> #include <conio.h> #include <stdlib.h> #include <windows.h> #include <ctime> using namespace std; подробнее

Показать сообщение отдельно
helloy
0 / 0 / 0
Регистрация: 15.11.2013
Сообщений: 46
22.12.2013, 02:26     Создать класс, содержащий вектор (vector) указателей на функции
1) Создать класс, содержащий вектор (vector) указателей на функции, а также функции add() и remove() для добавления и удаления указателей. Cоздайте функцию run(), которая перебирает элементы вектора и вызывает все функции.
2) Измените 1 задание так, чтобы в векторе хранились указатели на функции класса.
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 <iostream>
#include <vector>
using namespace std;
#define DF(N) void N() { \
   cout << "function " #N " called..." << endl; }
 
DF(a); DF(b); DF(c); DF(d); DF(e); DF(f); DF(g);
 
void (*func_table[])() = { a, b, c, d, e, f, g };
 
int main() {
    while(1) {
    cout << "press a key from 'a' to 'g' "
      "or q to quit" << endl;
    char c, cr;
    cin.get(c); cin.get(cr); // second one for CR
    if ( c == 'q' ) 
      break; // ... out of while(1)
    if ( c < 'a' || c > 'g' ) 
      continue;
    (*func_table[c - 'a'])();
  }
 
    return 0;
} ///:~
Как изменить этот код на задание 1 и 2?

Добавлено через 18 минут
Задание 1:
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
#include <iostream>
#include <vector>
using namespace std;
#define DF(N) void N() { cout << "function " #N " called..." << endl; }
 
DF(a); DF(b); DF(c); DF(d); DF(e); DF(f); DF(g);
void (*func_table[])() = { a, b, c, d, e, f, g };
 
class apple{
    vector<void (*)()> arr;
public:
    void add(void (*ar)()){
    arr.push_back(ar);
    }
 
    void run(int i){
     arr[i]();
    }
 
    void remove(){
        arr.pop_back();
    }
};
 
 
int main() {
    apple obj;
 
    char size=sizeof func_table/ sizeof *func_table;
 
    //add function
    for(char i=0;i<size;i++)
            obj.add(func_table[i]);
 
    //exe function
    for(char i=0;i<size;i++)
            obj.run(i);
 
    //delete function
     for(char i=0;i<size;i++)
            obj.remove();
 
 
    return 0;
} ///:~
Хэлп задание 2

Добавлено через 26 минут
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
#include <iostream>
#include <vector>
using namespace std;
#define DF(N) void N() { cout << "function " #N " called..." << endl; }
 
 
class green{
public:
    DF(a); DF(b); DF(c); DF(d); DF(e); DF(f); DF(g);
};
 
 
class apple{
    vector<void (green::*)()> arr;
public:
    void add(void (green::*ar)()){
        arr.push_back(ar);
    }
 
    void run(int i){
        green obj2;
        (obj2.*arr[i])();
    }
 
    void remove(){
        arr.clear();
    }
};
 
void (green::*func_table[])() = { &green::a, &green::b, &green::c, &green::d, &green::e, &green::f, &green::g };
 
int main() {
    apple obj;
 
    char size=sizeof func_table/ sizeof *func_table;
    for(char i=0;i<size;i++)
            obj.add(func_table[0]);
 
    //exe function
    for(char i=0;i<size;i++)
            obj.run(i);
 
    //delete function
    obj.remove();
 
 
    return 0;
} ///:~
Добавлено через 2 минуты
пока ждал сделал сам)))
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 16:24. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru