El puntero cambia el valor de la dirección a la que apunta.
Esperaría que pFirst siempre apuntara al mismo lugar en la dirección. Sin embargo, parece que pFirst se mueve junto con pCurrent aunque la función solo ha ingresado a la declaración Else una vez.
Nota: el código está creando una lista vinculada.
void Push(T data) {
++_size;
Data d = Data(data);
if (_pCurrent != nullptr) _pCurrent->SetNext(&d);
else _pFirst = &d;
_pCurrent = &d;
}
davy.ai
Parece que el problema es que
_pFirst
se está estableciendo en la dirección ded
en lugar de la dirección del nodo en el que se almacenad
. Esto significa que cuando se mueve_pCurrent
, también se mueve_pFirst
. Para solucionar esto, debes establecer_pFirst
en la dirección del nodo en el que se almacenad
, en lugar de en la dirección ded
en sí mismo.