Ошибки, баги, вопросы - страница 1034
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Как раз по сути это логично, ибо написанное выглядит немного бредовато.
С++ так не считает.
Ага, С++ много чего не считает, но дело в том, что инициализация статических членов возможно происходит не в том порядке, в котором инициализация, а в том, в котором объявление.
Надо покурить стандарт по этому поводу.
https://www.mql5.com/ru/docs/basis/variables/initialization
Слишком упросил - не перенес const - как видно теперь все четко - одна константа инициализируется другой:
Компилятор в качестве ошибки указывает именно на защищенность члена s1. Если заменить protected на public - то все работает как часы. Но защищенность по своей природе не имеет отношения ни к порядку инициализации ни к порядку присваивания, ни к возможности инициализации конкретным значением
Надо покурить стандарт по этому поводу.
Согласен, в общем случае компилятор компилятору - рознь и нужно разбираться.
Еще пример
Здесь MQL компилятор не хочет инициализировать массив значением const int (enum - проходит)
Опять же я апеллирую к тому, что С++ копилирует это и правильно инициализирует.
Вероятно ошибка в последовательности вызовов
В С++ порядок вычисления операндов выражения -- UB. Почему здесь вы рассчитываете на определенный порядок?
выводился как "word Hello" ?
В данном случае так и происходит для перегруженного оператора для типа int , при том, что для типа string все выводится нормально.
Более того - здесь С++ ни при чем. Допустим вы написали в коде
А у Вас эти функции выполнились в обратной последовательности или вообще для разных типов аргументов - в произвольной последовательностиПриветствую!
Помогите пофиксить 'invalid pointer access'.
В OnInit() имеем:
SymbolsCollection = new CSymbolsCollection(); SymbolsCollection.RefreshRealSymbols();
Метод CSymbolsCollection::RefreshRealSymbols() имеет вызов CleanSymbolsArray(myRealSymbols);
Эти метод и переменная объявлены в классе как:
Проблема в том, что RefreshRealSymbols() выполняются нормально, если вызываются в конструкторе CSymbolsCollection.
Однако, вызов SymbolsCollection.RefreshRealSymbols(); в OnInit(); приводит к:
Ошибка указывает в body метода CSymbolsCollection::RefreshRealSymbols() на строку CleanSymbolsArray(myRealSymbols);, позиция - сразу за открывающей скобкой.
Есть какие-нибудь идеи?
...
Есть какие-нибудь идеи?