Что скажете, разработчики?
Поддерживаю.
Думаю у разработчиков просто руки не дошли до этого. В планах обязано быть. На сегодня сокрытие реализации классов вообще невозможно.
На сегодня сокрытие реализации классов вообще невозможно.
Атнють, виртуальность вам в помощь!
Серьезно что ли? Для того, чтобы создать указатель на конечный класс, нужно определение конечного класса.
Атнють, виртуальность вам в помощь!
А чем виртуальность может помочь?
На сегодня сокрытие реализации классов вообще невозможно.
Здесь я имею в виду не "логическое" сокрытие реализации, а "физическую" недоступность исходного текста для пользователя класса. // например в случае коммерческой библиотеки
Примерно так
Открытая часть public.mqh
{
public:
virtual void HiddeMethod() { /* nothing */ }
};
Закрытая часть hidden.mq5
{
public:
virtual void HiddeMethod() { Print("Hellow from hidden method"); }
};CHiddenInterface *GetInterface() export
{
return(new CSomeObject());
}
Использование
#import "hidden.ex5"
CHiddenInterface *GetInterface();
#import
void OnStart()
{
CHiddenInterface *p=GetInterface();
p.HiddenMethod();
delete p;
}
Примерно так
Принимается (пока), но это ГЧЖ и жутко неудобно.
Примерно так
Закрытая часть hidden.mq5 {
public:
virtual void HiddeMethod() { Print("Hellow from hidden method"); }
};CHiddenInterface *GetInterface() export
{
return(new CSomeObject());
}
Использование
#import "hidden.ex5"
CHiddenInterface *GetInterface();
#import
void OnStart()
{
CHiddenInterface *p=GetInterface();
p.HiddenMethod();
delete p;
}
Вау! Так теперь можно определять классы в библиотеках? Здорово если так.
Я пробовал с месяц назад, у меня классы компилироваться не захотели.
Домой приду проверю. // Сейчас на работе.
Но экспортировать-импортировать по прежнему можно только функции, так? Я правильно понял?
Принимается (пока), но это ГЧЖ и жутко неудобно.
А шо це ГЧЖ ?
:)
А шо це ГЧЖ ?
Гланды через ...
1. для сокрытия реализации обязательно создавать его пустую копию
2. работа только через указатели, что само по себе чревато, пусть сборщик мусора и присутствует.
3. невозможность работать напрямую с классом.
Гланды через ...
1. для сокрытия реализации обязательно создавать его пустую копию
2. работа только через указатели, что само по себе чревато, пусть сборщик мусора и присутствует.
3. невозможность работать напрямую с классом.
Пока только так, мы сейчас рассматриваем вариант экспорта/импорта классов похожий на ваше предложение...

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Суть проблемы -- при большом количестве файлов и классов в проекте становится сложно разнести весь проект по файлам.
Сложность состоит в том, нет нормального метода отделения имплементации от объявления.
Т.е. в итоге все равно получается, что весь проект инклудами собирается в одном файле.
Решение состоит в том, чтобы сделать возможным импортирование классов из библиотек, как это на данный момент можно делать с функциями.
Что я имею в виду:
допустим у нас есть класс:
Помещаем его объявление в include файл. (скажем, SomeClass.mqh)
Далее создаем библиотеку: SomeClass.mq5
Далее используем класс
Что скажете, разработчики?