Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
143 / 27 / 4
Регистрация: 06.05.2019
Сообщений: 1,837
Записей в блоге: 4

Можно ли применить шаблон к экспортируемой функции?

18.05.2019, 20:04. Показов 689. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Я создал файл обычного типа с расширением "срр" и записал туда примитивную функцию.
C++
1
2
3
#define MT4_EXPFUNC extern "C++" __declspec(dllexport)
MT4_EXPFUNC  int __stdcall  add(int a=0, int b=0)//stdcall //cdecl
{return (18);}
Далее я создал файл с расширением "def" и указал название экспортируемой функции
C++
1
2
3
LIBRARY "dllmt42"
EXPORTS
add
Потом запустил это дело через Построение - Построить решение.
Я хочу применить к своей функции шаблон т.к. будут разрабатываться функции работающие с массивами и без шаблона здесь не обойтись никак пробовал так
C++
1
2
#define MT4_EXPFUNC extern "C++" __declspec(dllexport)
template<typename T>MT4_EXPFUNC  int __stdcall  add(T a=0, T b=0){ return (18);}
Т подсвечивается но пишет что есть ошибка помогите советом и возможно ли это?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.05.2019, 20:04
Ответы с готовыми решениями:

Можно ли применить шаблон проектирования?
Есть 3 класса. Класс 2 создержит массив из объектов класса 1. Класс 3 содержит массив из объектов класса 2. Т.е. сплошная...

Вызов не экспортируемой функции
Есть некий модуль exe, без проблем можно подгрузиться в его процесс, у этого модуля есть внутренние функции. Возможно ли их найти и...

Возвратить object в экспортируемой функции dll
Добрый день. есть функция в dll, которая использует сторонние tlb (они подключены в h): extern &quot;C&quot; _declspec(dllexport)...

7
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
18.05.2019, 22:04
Цитата Сообщение от Nexi99 Посмотреть сообщение
Т подсвечивается но пишет что есть ошибка помогите советом и возможно ли это?
Нет, невозможно (вернее - ну его нахрен, разбираться с именами шаблонных функций).
Сделай шаблонную add(), и вызови её в обычных add_int, add_double и т.д., которые и экспортируй
0
143 / 27 / 4
Регистрация: 06.05.2019
Сообщений: 1,837
Записей в блоге: 4
18.05.2019, 22:10  [ТС]
Тогда эта разработка потеряет смысл.
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
18.05.2019, 22:14
Что за разработка, и какой в ней был смысл?
0
 Аватар для eva2326
1673 / 501 / 107
Регистрация: 17.05.2015
Сообщений: 1,518
18.05.2019, 23:00
Цитата Сообщение от Nexi99 Посмотреть сообщение
возможно ли это?
Нет.
0
143 / 27 / 4
Регистрация: 06.05.2019
Сообщений: 1,837
Записей в блоге: 4
19.05.2019, 16:34  [ТС]
Смысл состоит в том что будет передаваться массив из языка клона mql4 в с++, у этих оболочек похожие свойства но mql4 работает через дескриптор, через посредник, а с++ обращается напрямую к памяти что даёт возможность передавать в функцию в с++ массивы любой размеренности и обрабатывать их а в mql4 это невозможно. А т.к. массивы разные а я стремлюсь к некой универсальности то мне нужно использовать и шаблоны. Шаблоны поддерживаются обоими языками а вот когда речь идёт о передачу тут я вижу приходит конец моей идее.
0
 Аватар для eva2326
1673 / 501 / 107
Регистрация: 17.05.2015
Сообщений: 1,518
24.05.2019, 13:49
Цитата Сообщение от Nexi99 Посмотреть сообщение
Смысл состоит в том что будет передаваться массив из
Передавайте адрес массива и длину,
как это принято в старом добром си.

Забудьте о шаблонах.
0
143 / 27 / 4
Регистрация: 06.05.2019
Сообщений: 1,837
Записей в блоге: 4
24.05.2019, 14:07  [ТС]
Так какой смысл в такой передаче если с типами нет решения, отдельно передать int double datetame string это сколько функций нужно, а ещё стоит учесть то что mql4 не отдаёт массивы разной размеренности так это получается int double datetame string нужно умножить на 3 и того 9ть функций вызывать это перебор. Но за помощь спасибо. А что касается размера mql4 может вернуть эти все параметры функцией ArrayRange(), а также есть возможность вернуть и ранг массива но дублировать функции на каждый тип не имеет никакого смысла, жалко конечно что нет таких возможностей. Лучшим решением будет привести все массивы в один вид например
C++
1
2
int Mas[100]          - одномерный
        int Mas[100][1][1] - 3ёхмерный
выглядит не очень но что поделаешь.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
24.05.2019, 14:07
Помогаю со студенческими работами здесь

Можно ли применить решением к данной функции
Сама функция указана на картинке Правила форума: 5.18. Запрещено размещать задания и решения в виде картинок и других файлов с их...

Отключение декорирования имени экспортируемой функции через DEF-файл
Здравствуйте ! Поправьте меня, пожалуйста, если я где-то ошибаюсь. Создаю DLL. Проект такой: DllMain.c #include...

Где можно достать API функции,что бы применить их потом в Delphi7?
Где именно можно достать API функции,что бы применить их потом в Delphi7?желательно года этак 2007

Как можно в textarea применить ::first-line, или как к первой строки применить стиль, внутри данного элемента
Да и вообще, для этого можно ли еще что-либо вложить в данный элемент, кроме как текста? Добавлено через 2 часа 3 минуты вопрос...

Можно сказать что делегат - шаблон для создания функции?
Можно сказать что делегат - некий шаблон для создания функции?


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru