[C con Clase] struct como atributo de una clase
srd4121 en njit.edu
srd4121 en njit.edu
Dom Dic 21 13:18:30 CET 2008
Hola Nuria,
Mensaje citado por: Núria Busom Figueres <meteorit666 en hotmail.com>:
>
> Hola otra vez a todos, sigo con mis problemas!!! Os cuento: (trabajo en
> C++, pero ya lo habreis notado por el asunto del email, no???)
>
> 1) tengo un programa principal por el que me entran num_prod mediante
> int main(int argc, char* argv[])
>
> 2) Estoy creando una clase Gramatica en que los atributos son:
> char* Sn;
> char* St;
> Produccion* P;
> char S;
> y en que produccion es un struct del tipo:
> struct Producciones {
> char* parteIzq;
> MyString* parteDcha;
> };
> typedef struct Produciones Produccion;
>
Esto no es necesario en C++, porque no hace falta indicar 'struct' cuando nos
referimos a una estructura. En C, sí hacía falta, pero en C++, no.
> El problema viene cuando en la implementación quiero hacer:
> P = Produccion [num_prod];
>
Ya has corregido esta parte en otro correo-e, que debería ser:
P = new Produccion[num_prod];
> Podeis decirme que es lo que hago mal?? No lo entiendo, en la
> implementación de una clase yo puedo acceder sus propios atributos, no?
Cierto.
> Y el tamaño a los struct se hace así, no?? Espero que podais ayudarme
No estoy seguro a qué te refieres con esta afirmación. Supongo que te refieres
a la hora de crear memoria dinámicamente para un array de 'struct' de una
cantidad indicada por 'num_prod'.
> El compilador dice:
> Gramatica.cpp: In member function ‘void
> Gramatica::introducirProduccion(int)’:
> Gramatica.cpp:40: error: expected primary-expression before ‘[’ token
> make: *** [Gramatica.o] Error 1
>
Creo que sería mejor darnos algunas sentencias más del código que llevas
escrito. Sinceramente, este error tiene sentido con la sentencia original que
nos diste; o sea,
P = Produccion [num_prod];
pero con la correción que hiciste después, este error no debería aparecer.
Espero que esto te ayude.
Steven
Más información sobre la lista de distribución Cconclase