Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++/CLI
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
Ignacius Niravi
0 / 0 / 0
Регистрация: 15.12.2015
Сообщений: 3
1

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

09.09.2016, 08:55. Просмотров 541. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.09.2016, 08:55
Ответы с готовыми решениями:

Делегаты С++
static float elliptic_paraboloid(float x1, float x2) { return...

Потоки, эвенты, делегаты. Преобразовать код так, чтобы функция вызывалась в отдельном потоке
доброго времени суток. изначально была функция, которая выглядит примерно вот...

Делегаты
Практикуюсь с примерами из учебника Шилдта. using System; class A { ...

Делегаты
Почему так компилируется Func<decimal, decimal> f = null; ...

Делегаты в Си
есть ли в Си делегаты, и как ими пользоваться? (книги, ссылки, развернутые...

5
Убежденный
Ушел с форума
Эксперт С++
15998 / 7269 / 1180
Регистрация: 02.05.2013
Сообщений: 11,637
Записей в блоге: 1
Завершенные тесты: 1
09.09.2016, 19:06 2
Библиотека написана на C#, значит и код, который ее использует,
тоже должен использовать C# либо какой-то другой язык платформы .NET.
Но не C++. К тому же в C++ нет делегатов...
0
Ignacius Niravi
0 / 0 / 0
Регистрация: 15.12.2015
Сообщений: 3
09.09.2016, 19:59  [ТС] 3
язык платформы .NET
Прошу прощения,разве C++ также не является языком платформы .NET?
0
Убежденный
Ушел с форума
Эксперт С++
15998 / 7269 / 1180
Регистрация: 02.05.2013
Сообщений: 11,637
Записей в блоге: 1
Завершенные тесты: 1
09.09.2016, 23:11 4
Не является.
Под .NET у Microsoft есть вариация на тему плюсов, называется C++/CLI,
но у него от C++ лишь схожий синтаксис.
0
Ignacius Niravi
0 / 0 / 0
Регистрация: 15.12.2015
Сообщений: 3
10.09.2016, 07:31  [ТС] 5
И в самом деле,извиняюсь за мою невнимательность, разместил тему в неправильном разделе. Прошу перенести в этот раздел
0
tezaurismosis
Администратор
Эксперт .NET
8547 / 3840 / 725
Регистрация: 17.04.2012
Сообщений: 8,548
Записей в блоге: 14
14.09.2016, 04:47 6
В этом коде используется лямбда-функция, которые в 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
14.09.2016, 04:47
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.09.2016, 04:47

Делегаты
Помогите разобраться: 1. Почему не выводит время на экран? это пример из...

Делегаты
delegate void AsmMath(ref int a, int b); static void Add(ref int a, int b)...

Делегаты
Всем добрый день.Только что начал изучать делегаты и сразу проблема-выдаёт...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru