Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
1. Функционал потомков не доступен. Не знаю кто и как, но лично я доступ к SetRadius() и SetSide() из Массива так и не получил.Может там есть путь как проблему решить автогеном, но хочется без этого.
2. Может я с указателями не так работаю, но у меня либо утечка вылазит постоянно либо приходится бить указатели сразу в том блоке где идет основная работа.
Можно пример?
Просто приведенный мной пример взят из документации и не понятно как он должен работать..
Вот так работает. Но совершенно не по документации :/ (Зато в очередной раз потренировался на указателях)
Выполняйте:
можно сделать намного проще... виртуализацией:
я не про то. Речь идет не о простом использовании указателей, а о масиве этих указателей с типом базового класса.
Не важно простой массив или массив указателей работает и доступно только то что прописано в базовом классе.
Ну или я чего-то не понимаю.
Для примера, немного переделанный базовый класс (оформлен как структура)
Если примерно так запихать это все дело в массив доступ к функционалу как минимум объявленному в базовом классе мы получим.
Вопрос в том как получить доступ к функционалу потомком если массив имеет тип базового класса (т.е. массив имеет тип CShape)?
я не про то. Речь идет не о простом использовании указателей, а о масиве этих указателей с типом базового класса.
Вопрос в том как получить доступ к функционалу потомком если массив имеет тип базового класса (т.е. массив имеет тип CShape)?Я же написал на прошлой странице как:
Тот же самый код, только с массивом:
Вот так работает. Но совершенно не по документации :/
Выполняйте:
Вот за такое:
надо руки отрывать с конфискацией клавиатуры.
В С++ по иерархии классов можно двигаться с помощью dynamic_cast, его и там кстати не любят. В MQL это может стать причиной неявных падений, которые с полутыка не разгребешь, т.к. баг совсем в другом месте.
Поэтому такое приведение категорически не советую использовать. То есть вообще. К предкам пожалуйста, к детям ни ни.
Вот за такое:
надо руки отрывать с конфискацией клавиатуры.
В С++ по иерархии классов можно двигаться с помощью dynamic_cast, его и там кстати не любят. В MQL это может стать причиной неявных падений, которые с полутыка не разгребешь, т.к. баг совсем в другом месте.
Поэтому такое приведение категорически не советую использовать. То есть вообще. К предкам пожалуйста, к детям ни ни.
Как бы помягче то ответить....
Если башка дурная у программиста, то простая операция 1+1 может быть причиной неявных падений....
И хочу заметить, что MQL5 - это не С++...
Это всего лишь возможность, а не вопрос применения....
Тот же самый код, только с массивом:
1. Уберите m_radius() из предка, его в примере нет. :) И получите отсутствие работы с ним в OnStart();
2. А можно куда в другое место снести строку delete Base[0]? Скажем если это не скрипт а сова и мне данные в массиве еще пригодятся.
У меня сразу утечка памяти вылазит. Пришлось по этой причине перейти на структуры...
1. Уберите m_radius(), его в примере нет. И получите отсутствие работы с ним в OnStart();
2. А можно куда в другое место снести строку delete Base[0]? Скажем если это не скрипт а сова и мне данные в массиве еще пригодятся.
У меня сразу утечка памяти вылазит. Пришлось по этой причине перейти на структуры...
1) Убрал, работает:
2) Главное удалить до завершения программы... но если у Вас этот указатель создаётся в функции, то нужно позаботиться о его сохранении в глобальном месте...