Ошибки, баги, вопросы - страница 3381

 

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Ошибки, баги, вопросы

A100, 2023.09.06 09:41

void OnStart()
{
    OnStart2();
    static A a3(3); // Последним создан, первым удален.
}
void OnStart2()
{
    static A a1(1); // Первый создан, последний удален.
    static A a2(2); // Второй создан, предпоследний в удалении.
}

Вроде, логично.

 
fxsaber #:

Вроде, логично.

Из Вашего сообщения не понятно какой вариант Вы считаете логичным, потому что по факту все происходит не как у Вас описано:

// Последним создан, первым удален.
// Первый создан, последний удален.
// Второй создан, предпоследний в удалении.

Напомню:

Результат:   +1+2+3-2-1-3 //непонятный порядок
Ожидалось: +1+2+3-3-2-1 //LIFO порядок
 
A100 #:

Из Вашего сообщения не понятно какой вариант Вы считаете логичным, потому что по факту все происходит не как у Вас описано:

Когда писал, ошибся. Сначала удаляются OnStart2-переменные, затем - OnStart.
 
fxsaber #:
Когда писал, ошибся. Сначала удаляются OnStart2-переменные, затем - OnStart.

А причем здесь OnStart и OnStart2 ? если static удаляются в конце программы, за их пределами, когда уже никаких OnStart и OnStart2 нет

 
A100 #:

А причем здесь OnStart и OnStart2 ? если static удаляются в конце программы, за их пределами, когда уже никаких OnStart и OnStart2 нет

Я просто полностью понимаю логику текущей реализации.

 
fxsaber #:

Я просто полностью понимаю логику текущей реализации.

Если бы понимали, то не дописали бы это

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Ошибки, баги, вопросы

fxsaber, 2023.09.06 10:56

Вроде, логично.

void OnStart()
{
    OnStart2();
    static A a3(3); // Последним создан, первым удален.
}
void OnStart2()
{
    static A a1(1); // Первый создан, последний удален.
    static A a2(2); // Второй создан, предпоследний в удалении.
}
которое потом объяснили якобы ошибкой
 
A100 #:

Если бы понимали, то не дописали бы это

которое потом объяснили якобы ошибкой

Это нормально, когда быстро отвечаешь и не особо проверяешь то, что написал.

На данный момент понимание такое, что без запуска пойму результат.

 
fxsaber #:

На данный момент понимание такое, что без запуска пойму результат.

Это уже уровень бога

У меня же простой уровень, поэтому я сначала проверяю свое понимание в C++ и если оно не совпадает с MQL - выкладываю сюда. Считаю, что для несовпадения должны быть существенные причины
 
A100 #:

Считаю, что для несовпадения должны быть существенные причины

Да просто сделали, как сделали. Без заморачиваний на 100%-ю совместимость. Ведь на самом деле придумать критический сценарий для такого несовпадения - надо очень постараться.

Надо же как-то приоритеты расставлять при распределении времени разработчикам, чем в первую очередь заниматься, а чем - по остаточному принципу. Думаю, данная "проблема" где-то в хвосте приоритетов.

 
fxsaber #:

Да просто сделали, как сделали. Без заморачиваний на 100%-ю совместимость. Ведь на самом деле придумать критический сценарий для такого несовпадения - надо очень постараться.

Надо же как-то приоритеты расставлять при распределении времени разработчикам, чем в первую очередь заниматься, а чем - по остаточному принципу. Думаю, данная "проблема" где-то в хвосте приоритетов.

Просто Вы не используете ООП, поэтому Вам и не важен порядок. А мне важен, потому что это не просто удаление объекта, а вызов функции (деструктора), которое влечет в том числе открытие\закрытие позиций и мне не все равно в каком порядке это будет происходить

Что касается приоритетов, то это не в хвосте, потому что это ошибка при выполнении, а не при компиляции (о которой компилятор заранее сообщает) 

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