Не знаю, что и думать
Есть класс
class evolve
{
public:
float global_time;
}
global_time
, а обращаются к этому полю лишь два метода: конструктор и operator()
. Вот, как это происходит:
evolve::evolve(...): ..., global_time(0.0)
{
...
}
void evolve::operator()(float d_time)
{
...
global_time += d_time;
}
Я создаю экземляр класса (назовём его ev
), пытаюсь им пользоваться, но в ev.global_time
находится какая-то каша: случайные данные, меняющиеся от запуска к запуску. Но не всё так просто: когда я изнутри класса вывожу для отладки global_time
, то там правильное значение!
И это именно то самое поле, а не какая-то локальная переменная или иная путинца в именах, потому что
- если изнутри класса печатать
this->global_time
, то точно так же всё ок, значение правильное - прошерстил весь проект с помощью grep по слову
global_time
— ничего лишнего нет.
Была гипотеза, что в каком-то месте в global_time записывается НЁХ, но и она не сработала - потому что в this->global_time
лежат правильные данные всё время работы программы, в т.ч. и намного позже инициализации. А ev.global_time
во внешнем коде выдаёт фигню сразу же после инициализации ev
, и далее.
Все оптимизации отключил, толку 0.
Как такую дичь отлаживать вообще? И почему такое может быть, есть предположения?