Ошибки, баги, вопросы - страница 1980
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Для справки: если оба ваши примера четко перевести на С++, то С++ выдаст ошибку в обоих случаях. MQL в 1-ом случае не выдает ошибку лишь потому что процесс компиляции (а не сам язык) отличается
Спасибо.
Спасибо.
Чтобы не быть голословным привожу аналог к последнему (немного подправил на свой манер):
и к первоначальному сообщению
Я проверил, вариант Станислава успешно компилируется в VS 2010. Кроме того, работает также и обращение к приватному полю, а не только к методу. Так что, пожалуй, А100 погорячился в своих выводах на этот раз )
Я проверил, вариант Станислава успешно компилируется в VS 2010. Кроме того, работает также и обращение к приватному полю, а не только к методу. Так что, пожалуй, А100 погорячился в своих выводах на этот раз )
А он точно соответствует https://www.mql5.com/ru/forum/1111/page1999#comment_5677254 ?
Выше мои варианты... выкладывайте код сюда - раз он сам не может выложить
А он точно соответствует https://www.mql5.com/ru/forum/1111/page1999#comment_5677254 ?
Выше мои варианты... выкладывайте код сюда - раз он сам не может выложить
А каким компилятором вы это компилировали? У меня в VS 2010 ваш код не компилируется совсем по другой причине: не определён класс B там, где вызывается метод этого класса. Для этого нужно вынести определение g() за пределы класса. И у Станислава именно так и было сделано. Т.е. ваш код должен быть таким:
и это компилируется.
А каким компилятором вы это компилировали?
По сути это ничего не меняет - ошибка при компиляции (у меня планшет - компилятор Borland)
По сути это ничего не меняет - ошибка при компиляции (у меня планшет - компилятор Borland)
Хм, значит надо лезть в стандарты языка и смотреть, чей компилятор косячит.
Косячит VS 2010 потому что преодолевает private путем неявного преобразования от B* к A*
Хм, значит надо лезть в стандарты языка и смотреть, чей компилятор косячит.
gcc 7.2 компилит последний вариант, проверял тут
В итоге получается следующая таблица
И при этом msdn пишет: Управление доступом помогает предотвратить использование объектов в неправомерных целях. Такая защита теряется при выполнении явных преобразований типов (приведении типов).