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

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

Войти
Регистрация
Восстановить пароль
 
helloy
0 / 0 / 0
Регистрация: 15.11.2013
Сообщений: 46
22.12.2013, 02:26     Создать класс, содержащий вектор (vector) указателей на функции #1
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 минуты
пока ждал сделал сам)))
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.12.2013, 02:26     Создать класс, содержащий вектор (vector) указателей на функции
Посмотрите здесь:

C++ Создать производный класс ТРОИЧНЫЙ ВЕКТОР от класса Vector
Создать класс содержащий три поля и две функции C++
C++ Создать класс Vector – вектор, используя динамическую память
Создать класс Vector – вектор, используя динамическую память C++
Создать класс Vector (вектор целых чисел) C++
Перегрузка функции(Создать класс Vector – вектор.) C++
Разработать класс Vector – геометрический вектор произвольной размерности C++
Создать класс вектор Vector (int *). Перегрузить операции: C++
Как создать класс содержащий только вспомогательные функции C++
Класс содержащий vector C++
C++ Вектор указателей на класс
C++ Вектор указателей на абстрактный класс?

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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