0 / 0 / 0
Регистрация: 15.12.2015
Сообщений: 3

Код из C# в C++ ( Делегаты )

09.09.2016, 08:55. Показов 2212. Ответов 5

Студворк — интернет-сервис помощи студентам
Для программы подключил библиотеку MathOsParser, но все примеры к ней написаны на C#, с чем и возникли проблемы. В MathOsParser C# функции добавляются следующим образом:
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
/*
 * This example demonstrates the "anonymous method" way of adding
 * a function that can take more than one agument.
 */
 
 MathParser parser = new MathParser();
 
//for long functions
parser.LocalFunctions.Add("log", delegate(decimal[] input) // adding the function
{
    // input[0] is the number
    // input[1] is the base
 
  if (input.Length == 1)
  {
      return (decimal)Math.Log((double)input[0]);
  }
  else if (input.Length == 2)
  {
      return (decimal)Math.Log((double)input[0], (double)input[1]);
  }
  else
  {
      return 0; // false
  }
});
Как сделать это в C++? А если конкретно, то проблема с
C#
1
delegate(decimal[] input)
Сама библиотека
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
09.09.2016, 08:55
Ответы с готовыми решениями:

Написать код чтобы работа с методами, осуществлялась через делегаты
Написать код чтобы работа с методами, осуществлялась через делегаты. Задача Описать процедуру TrianglePS(a, P, S), вычисляющую по...

Потоки, эвенты, делегаты. Преобразовать код так, чтобы функция вызывалась в отдельном потоке
доброго времени суток. изначально была функция, которая выглядит примерно вот так: public MyModel ReturnList( int id ) { ...

Делегаты
Вопрос о реализации групповых вызовов в делегатах. К примеру я создал такой класс: class Math { public int x,...

5
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
09.09.2016, 19:06
Библиотека написана на C#, значит и код, который ее использует,
тоже должен использовать C# либо какой-то другой язык платформы .NET.
Но не C++. К тому же в C++ нет делегатов...
0
0 / 0 / 0
Регистрация: 15.12.2015
Сообщений: 3
09.09.2016, 19:59  [ТС]
язык платформы .NET
Прошу прощения,разве C++ также не является языком платформы .NET?
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
09.09.2016, 23:11
Не является.
Под .NET у Microsoft есть вариация на тему плюсов, называется C++/CLI,
но у него от C++ лишь схожий синтаксис.
0
0 / 0 / 0
Регистрация: 15.12.2015
Сообщений: 3
10.09.2016, 07:31  [ТС]
И в самом деле,извиняюсь за мою невнимательность, разместил тему в неправильном разделе. Прошу перенести в этот раздел
0
Администратор
Эксперт .NET
 Аватар для tezaurismosis
9673 / 4825 / 763
Регистрация: 17.04.2012
Сообщений: 9,664
Записей в блоге: 14
14.09.2016, 04:47
В этом коде используется лямбда-функция, которые в C++/CLI поддерживаются ограниченно и не во всех версиях.
Проще сделать код в стиле C# 2.0, используя отдельный метод.
Как-то так
C++
1
2
3
4
5
6
Decimal LogMethod(array<Decimal>^ input) {
    // реализация метода
}
 
MathParser^ parser = gcnew MathParser();
parser->LocalFunctions->Add(L"log", &LogMethod);
Обратите внимание на последнюю строку - если метод LogMethod расположен внутри класса, то нужно будет указать его имя с классом, например MyClass::LogMethod
Также возможно придётся приводить тип делегата, но тут нужно увидеть сигнатуру метода MathParser.LocalFunctions.Add()
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
14.09.2016, 04:47
Помогаю со студенческими работами здесь

Делегаты
Добрый день, пытаюсь разобраться с делегатами и не совсем понятен один момент, может кто-то подсказать? Пример взят с интернета... Вопрос в...

Делегаты
Помогите разобраться: 1. Почему не выводит время на экран? это пример из учебника (Learn C# 3.0 O'REILLY Jesse Liberty, p.390),...

Делегаты
Задача звучит так: Создайте делегата и используйте его вместо функции Console.ReadLine() в запросе ввода от пользователя. Объясните...

Делегаты С++
static float elliptic_paraboloid(float x1, float x2) { return pow(((x1-0)*cos(80*3.14/180)+(x2-1)*sin(80*3.14/180)), 2)/4+ ...

Делегаты
Почему так компилируется Func&lt;decimal, decimal&gt; f = null; f=x =&gt; x &gt; 1 ? f(x - 1) + f(x - 2) : x; ...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru