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

Вызов функции из массива, через указатель - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ В чем смысл выражения "y+='A'-10" ? http://www.cyberforum.ru/cpp-beginners/thread839983.html
В чем смысл выражения y+='A'-10;
C++ Реализация работы конечного автомата Задача: Построить конечный автомат, проверяющий есть ли во входной цепочке S хотя бы одна из следующих подстрок: X1=“aaa”; X2=“aab”; X3=“abab”. Нужно: 1) построить конечный автомат, таблицу переходов, схему переходов и прочее, прочее, прочее. - это всё сделано. 2) написать программу, реализующую работу этого автомата. программа должна работать с файлами. входной файл состоит из одной цепочки... http://www.cyberforum.ru/cpp-beginners/thread839981.html
C++ Создание и разрушение объектов класса, исследование вызовов конструкторов и деструкторов
Здравствуйте! Проверте пожалуйста код и подскажите мои ошибки. Согласно теме необходимо разобрать класс библиотека(имя – char*, автор – char*,стоимость – float) #include "stdafx.h" #include <iostream> #include <iomanip> #include <string> using namespace std; // начало объявления класса class biblioteka // имя класса {
C++ Написать класс котов
Помогите пожалуйста написать программу... буду очень признательна :) Написать класс котов. Атрибутами кота есть действительный вес (в кг) и целый возраст (в годах). Методы описывают следующие действия: ввести и вывести данные о коте, сравнить двух котов по весу и возрасту, увеличить возраст кота на один год, изменить вес на заданную величину. Написать главную функцию, которая вводит и выводит...
C++ подскажите - консольное меню не реагирует на нажатие клавиш (case) http://www.cyberforum.ru/cpp-beginners/thread839972.html
вот код, mv 2008 компилируется без ошибок, но при выборе 1, 2, 3 или 4 в меню ничего происходит где косяк? #include "stdafx.h" #include <iostream> #include <fstream> #include <string.h> #include <conio.h> #include <iomanip>
C++ Программа на контестере проходит только 1 тест из 9. Можете объяснить, в чем моя ошибка и как ее исправить! Объясните, в чем моя ошибка в решении задачи. Условие: 103. Подсчет войск ограничение времени на тест: 0.5 сек. ограничение памяти на тест: 65536 KB. ввод: input.txt вывод: output.txt подробнее

Показать сообщение отдельно
NeonLost
Пес войны
74 / 85 / 3
Регистрация: 23.02.2012
Сообщений: 653

Вызов функции из массива, через указатель - C++

17.04.2013, 10:41. Просмотров 596. Ответов 1
Метки (Все метки)

имею код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <vector>
#include <utility>
using namespace std;
void Func()
{
    cout<<"pFunc()";
}
int main()
{
    vector<void*> vec;
    vec.push_back(&Func);
    /*for(auto it=vec.begin(); it!=vec.end(); ++it)
    {
        *it();
    }*/
    for(int i=0; i!=vec.size(); ++i) vec[i]();
    getchar();
    return 0;
}
вопрос, почему не работает?..как мне вызвать эту функцию в цикле?..(
может есть извращение в бусте?..или в стд?..)

Добавлено через 14 минут
сам понял, надо было вот так...)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <vector>
#include <utility>
using namespace std;
void Func()
{
    cout<<"pFunc()";
}
int main()
{
    typedef void (*pFunc) ();
    vector<pFunc> vec;
    vec.push_back(&Func);
    for(auto it=vec.begin(); it!=vec.end(); ++it)
    {
        (*it)();
    }
    getchar();
    return 0;
}
Добавлено через 8 минут
но вот так поинтересней будет немного...мб кому понадобится...)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <vector>
#include <utility>
using namespace std;
void Func()
{
    cout<<"pFunc()";
}
int main()
{
    typedef void (*pFunc) ();
    vector<pair<bool, pFunc>> vec;
    vec.push_back(make_pair(true, &Func));
    vec.push_back(make_pair(false, &Func));
    for(auto it=vec.begin(); it!=vec.end(); ++it)
    {
        if(it->first) (it->second)();
    }
    getchar();
    return 0;
}
Добавлено через 11 часов 56 минут
но у меня есть еще один вопрос...)
можно ли добавить в массив этот указатель
C++
1
typedef void (*pFunc) ();
и указатель на функцию с аргументом например инт?
C++
1
typedef void (*pFunc) (int);
как бы разные типы получаются, но это же все таки указатели, может можно их кастануть к войд?
и использовать как-то так
C++
1
vector<pair<bool, void*>> vec;
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru