Hola a todos, espero esten bien.
Quisiera que me ayuden con esta duda:
Si tengo las siguientes estructuras
struct carta{
int fig;
int num;
};
struct nodo{
struct carta naipe;
struct nodo *sgte;
};
typedef struct nodo NODO;
typedef struct nodo* nodoPtr;
nodoPtr MAZO = NULL;
¿Cual seria la forma correcta de acceder a los datos fig y num? :-\
nodoPtr nuevo;
nuevo = new(NODO);
(nuevo->naipe).fig = 0;
(nuevo->naipe).num = 0;
(nuevo->naipe)->fig = 0;
nuevo->(naipe.fig) = 0;
Gracias :)
¿Vienes de Java? Lo digo por esto
nodoPtr nuevo;
nuevo = new(NODO);
Esto no es valido ya que nuevo no es un puntero. Y aunque lo fuera esa no es la sintaxis del new:
http://www.cplusplus.com/reference/new/operator%20new%5B%5D/
Los objetos pueden crearse de forma local o dinamicamente con punteros. En el primer caso se usa el '.' para adceder a sus miembros, en el otro caso se usa el '->'
Gracias por contestar.
Cita de: amchacon en 17 Marzo 2014, 20:04 PM
¿Vienes de Java? Lo digo por esto
No, apenas conozco C++. esa forma de implementar una pila la vi aqui http://casicodigo.blogspot.com/2012/10/pilas-en-c.html (http://casicodigo.blogspot.com/2012/10/pilas-en-c.html) :
typedef nodo *PtrPila //Puntero tipo nodo, que luego lo inicializa a NULL
Y luego un puntero auxiliar:
ptrPila q = new (struct nodo);
Y para ahorrarme el "struct nodo" se me ocurrio hacer eso XD
Crear un tipo de dato puntero(nodoPtr) que apunte a un tipo de dato nodo. (Eso creo, pues si me a funcionado)
Pero bueno, no sabía que hiba contra la sintáxis de new :P
Volviendo al código entonces sería algo asi:
nuevo->naipe.fig = 0;
Ya que 'naipe' no es un puntero :-\
ahora mi duda es con respecto a los parentesis.
(nuevo->naipe).fig = 0;
ó
nuevo->(naipe.fig) = 0;
:huh: O no importa si lo pongo sin parentesis.
En C++ no hace falta poner struct, eso es en C.
Con la sintaxis de new me refería a que no hace falta parentesis:
ptrPila* q = new nodo;
En cuanto a los parentesis:
nuevo->naipe.fig = 0;
Mal, fig es un objeto.
PD: Antes de empezar haciendo una pila. Deberías seguir algún tutorial de programación en C++, te faltan las bases del lenguaje.
Creo que estoy aprendiendo en el orden y de la manera incorrecta.
Seguire tu consejo, Gracias.