Экспорт\импорт классов? - страница 4

 
mql5:
Экспорту классов быть. С синтаксисом ещё не определились. Реализация отложена.
А чем
class export A { // все методы класса A - экспортируемы
	void f();
	void g();
};

не устраивает?
#import "Af.ex5"
    void A::f();
#import "Ag.ex5"
    void A::g();
#import
 
A100:
А чемне устраивает?
Неудобно и криво. И задачи по большому счету не решает. Уж лучше тогда через интерфейс.
 

TheXpert:
 И задачи по большому счету не решает. Уж лучше тогда через интерфейс.

Через интерфейс - нельзя создать производный класс, а это - существенное ограничение. Задачу разнести реализацию по .ex5 файлам - решает полностью, а какие еще есть задачи?

Документация по MQL5: Основы языка / Объектно-ориентированное программирование / Наследование
Документация по MQL5: Основы языка / Объектно-ориентированное программирование / Наследование
  • www.mql5.com
Основы языка / Объектно-ориентированное программирование / Наследование - Документация по MQL5
 
A100:

Через интерфейс - нельзя создать производный класс, а это - существенное ограничение. Задачу разнести реализацию по .ex5 файлам - решает полностью, а какие еще есть задачи?

уточните, пожалуйста, про какой интерфейс речь, а то не совсем понятно почему нельзя.
 
A100:

Через интерфейс - нельзя создать производный класс, а это - существенное ограничение. Задачу разнести реализацию по .ex5 файлам - решает полностью, а какие еще есть задачи?

Скрыть реализацию, уменьшить выходной размер, уменьшить зависимость.
 

sergeev:
уточните, пожалуйста, про какой интерфейс речь, а то не совсем понятно почему нельзя.

 

https://www.mql5.com/ru/forum/127#comment_1080

Пример от MQ - нельзя создать производный от CSomeObject класс

 
A100:

 

https://www.mql5.com/ru/forum/127#comment_1080

Пример от MQ - нельзя создать производный от CSomeObject

так ведь надо от CHiddenInterface  наследовать, а не тот что в ex5.
 
sergeev:
так ведь надо от CHiddenInterface  наследовать, а не тот что в ex5.

Там же в примере все видно -- реализацию получаем через импортируемую функцию.

У меня в FileUnlimited жизненный пример если хочешь поковыряться.

Документация по MQL5: Основы языка / Препроцессор / Импорт функций (#import)
Документация по MQL5: Основы языка / Препроцессор / Импорт функций (#import)
  • www.mql5.com
Основы языка / Препроцессор / Импорт функций (#import) - Документация по MQL5
 
TheXpert:

Там же в примере все видно -- реализацию получаем через импортируемую функцию.

в смысле? у тебя наследование не CHiddenInterface, а напрямую от CSomeObject.ex5 ?  :)
 
sergeev:
так ведь надо от CHiddenInterface  наследовать, а не тот что в ex5

От CHiddenInterface наследовать не имеет смысла - его нужно использовать "как есть" - он только для того, чтобы получить доступ к методам CSomeObject. А эти методы уже нельзя будет модифицировать частично.

TheXpert:
Скрыть реализацию, уменьшить выходной размер, уменьшить зависимость.

Выше я приводил примерное содержание .mqh. Всё объявление в .mqh, реализация в .mq5 и скрыта в .ex5. Размер включаемых .mqh по сравнению с интерфейсным вариантом - увеличивается незначительно. Про зависимость - не понял.

Причина обращения: