Primero que nada una disculpa por no explicar los cambios que hice, pensé que así como pusiste el código sin mas explicación también podrías entender los cambios sin mucha explicación.
Cita:
Iniciado por ambigus 1. ¿Porqué quitar le "nodo *apun" a void reco_iter(nodo*apun) y quitar definitivamente "void borrar_lista(nodo *inicial);"?
Código C++:
Ver originalvoid reco_iter(nodo *apun); // Cambio
void borrar_lista(nodo *inicial) ;
De esto
Código C++:
Ver originalvoid lista::reco_iter(nodo *apun) // Cambio
{
while(apun != NULL)
{
imprime_nodo(apun); // Imprime valor nodo
apun = apun->sig;
}
Pasas a esto:
Código C++:
Ver originalvoid lista::reco_iter() // Cambio
{
nodo *apun = inicial;
while(apun != NULL)
{
imprime_nodo(apun); // Imprime valor nodo
apun = apun->sig;
}
}
Veo que no comprendes aun bien el concepto de encapsulamiento. Dime, ¿Por que debo de pasarle y yo por mi parte mantener siempre el primer nodo de la lista, que no eso debería de ser transparente?
Cita:
Iniciado por ambigus 2. ¿Porqué metes dentro el "nodo *apun = inicial;"?
3. ¿Porqué este cambio?
De esto:
Código C++:
Ver originalnodo *apun; // " * " es para crear nodo
apun=inicial;
A esto:
Código C++:
Ver originalnodo *apun = inicial; // " * " es para crear nodo
Bueno la pregunta 2 y 3 es la misma pregunta. Ahora realmente me pregunto si tu escribiste este código. Es básico, una de las primeras cosas que vez cuando aprendes C o C++ que int x = 1; es igual que si tuvieras. int x; x = 1; simplemente es como una abreviación.
Cita:
Iniciado por ambigus 4. ¿Porqué de "void main()" pasas a "int main()"?
Como te dije antes, es porque no estas acostumbrado a los estándares, pero un estándar de C++ es que regresen un entero. 0 en caso que todo salio bien y cualquier otro valor si algo salio mal. De hecho no te debería de compilar con void main() con cualquier compilador de C++ minimamente decente.
Cita:
Iniciado por ambigus 5. ¿Porqué de esto
Código C++:
Ver originalapun = objlista.inicial;
objlista.reco_iter(apun);
objlista.borrar_lista(objlista.inicial)
Pasas a esto:
Código C++:
Ver originalobjlista.reco_iter();
objlista.~lista();
return 0;
No tenias implementado borrar_lista solo tenias implementado el destructor. Así que mejor cambie la llamada de borrar_lista al destructor. Y el de reco_iter siempre obtenias objlista.inicial y luego se lo pasabas de parámetro al método entonces dije porque mejor no simplemente lo tomas internamente en la clase y ya.
Otra cosa trata de separar con una linea en blanco tus métodos porque todos juntos no se venia donde terminaba uno y donde empezaba otro.