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

Альтернативный вызов функции - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ СЛАУ. Метод обратной матрицы, метод Гаусса, метод Крамера, метод Зейделя http://www.cyberforum.ru/cpp/thread1242580.html
Помогите ребят. Не могу построить алгоритмы для этих методов Язык C++
C++ Разделить выпуклый многоугольник на 4 равные части двумя взаимно перпендикулярными прямыми Почти то же, что и тут: http://www.cyberforum.ru/java/thread1022760.html, но хочется решить на C++. А именно: Есть некоторый выпуклый многоугольник, который необходимо разделить на 4 равные части двумя взаимно перпендикулярными прямыми. Входные данные: количество вершин и их координаты в порядке обхода. Координаты не больше 10000, самих координат не больше 1500. Координаты все целочисленные.... http://www.cyberforum.ru/cpp/thread1242320.html
C++ Отследить изменение памяти сторонним процессом
Есть основное приложение1. Есть приложение2, которое считывает и изменяет его память. Надо отследить адреса, действие(чтение или запись), значение до и после действия. Куда копать?
Adobe PDF Library (APDFL) - поместить в формируемый документ картину формата PNG C++
Всем привет! Данная тема, возможно, не вполне подходит для данного раздела, поскольку вопрос, преимущественно имеет отношение к API Adobe PDF, конкретнее, к плюсовому API. Я пишу с использованием этой библиотеки от datalogics некоторое API для формирования PDF-документов. Сбился с ног, пытаясь запихать в формируемый документ (программно, разумеется) картину формата PNG. С JPEG проблем нет,...
C++ Электронная подпись+работа с сертификатами http://www.cyberforum.ru/cpp/thread1241481.html
Здравствуйте!дали задание,саму суть понял,не могу разобраться,как начать писать программу.помогите кто чем может. Вот само задание: Разработать приложение - утилиту командной строки, или с графической оболочкой (на выбор). Утилита должна решать следующие задачи: 1. По серийному номеру находить нужный сертификат из хранилища MY 2. Выводить на экран информацию о владельце, сроке действия, и об...
C++ Освобождение динамически созданных переменных (2-ого уровня) И так, продолжу старую тему про динамику. На этот раз есть вот что: #include <iostream> #include <stdio.h> #include <conio.h> #include <math.h> using namespace std; подробнее

Показать сообщение отдельно
ForEveR
Модератор
Эксперт С++
7958 / 4720 / 319
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
19.08.2014, 17:39     Альтернативный вызов функции
Izual, Вряд ли. Единственное, что я могу предложить это работать очень аккуратно через ваш ENUM.
Что-то вроде

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
#include <iostream>
 
int call_1() 
{
   std::cout << "This" << std::endl;
   return 0;
}
double call_2() { return 0; }
 
void call(int v, void* f)
{
   switch(v)
   {
   case 1:
      using fptri = int(*)();
      ((fptrd)f)();
      break;
   case 2:
      using fptrd = double(*)();
      ((fptrd)f)();
      break;
   }
}
 
int main()
{
   call(1, (void*)&call_1);
}
Ну или через any/variant и т.д. все так же:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <boost/any.hpp>
 
int call_1() 
{
   std::cout << "This" << std::endl;
   return 0;
}
double call_2() { return 0; }
 
void call(int v, void* f)
{
   using fptr = boost::any(*)();
   ((fptr)f)();
}
 
int main()
{
   call(1, (void*)&call_1);
}
call допустим возвращает boost::any, а вот преобразовывать во что-то более конкретное его уже придется in-place.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru