Где вы проверяете значение previous
?Если вы выполняете это в этой функции, после назначения убедитесь, что в сборке отключены оптимизации, а затем повторите попытку.
С другой стороны, если вы смотрите previous
снаружиобласть действия этой функции, тогда она никогда не будет изменена.При вызове search()
копия указателя previous
загружается в стек, и вы изменяете эту копию.Модификация исчезает после выхода из функции.Чтобы сохранить изменения, сделайте что-то вроде этого:
inline int search(QueueEntry<T> *current,QueueEntry<T> **previous, unsigned long long t)
{
...
*previous = current;
...
}
При вызове search()
теперь нужно будет передать адрес указателю вместо значения.
Или вы можетепередайте ссылку, и остальная часть вашего кода останется прежней.
inline int search(QueueEntry<T> *current,QueueEntry<T> *&previous, unsigned long long t)