duda acceso estructura

LioNHearT

buenas noches a todos. tengo una duda sobre como acceder a una tupla. me explico. tengo la siguiente estructura:

struct info{
string user, pass;
};

struct more{
typedef info tTabla[20];
int nValores;
};

la cuestion es que quiero acceder a valores de esta tabla tupla pero alomejor no lo hago correctamente. hago esto:

more M;

//guardar un dato introducido en la 1ª posicion
cin>>M[0].user=usuario;
cin>>M[0].pass=contraseña;

no se hace asi?

muchas gracias a todos.

r2d2rigo

WHAT. Menudo cacao te has hecho!

typedef struct info {
string user, pass;
};

typedef struct more {
info tTabla[20];
int nValores;
};

more M;

...

cin >> M.tTabla[0].user;
cin >> M.tTabla[0].pass;
LioNHearT

si ya se que me hago un cacao, es que creia que se hace como tu pero mira, hago esto:

struct info{
string usuari,guanyador;
int intents,numero;
int h_inici,durada;
};
struct partides{
typedef info tPartides[MAX_PARTIDES];
int nPartides;
};

partides p;
p.tPartides[p.nPartides].num=100;

y el compilador me dice: " invalid use of `partides::tPartides' "

que hago mal?

pd: como se hacia para copiarlo del pastebin :$?

r2d2rigo

Es que tu estas haciendo

p.tPartides[p.nPartides].num=100;

Y en el struct tienes declarada la variable numero y no num.

PD: abajo del todo de tu codigo de Pastebin hay un textbox en el que puedes selecionarlo sin numeros de linea ni pijadas.

Puni

igual se debe a mi forma de programar todavia "muy academica" pero... porq usas structs en c++? no tendria mas sentido una clase y te ahorras problemas a la hora de acceder? es mas, no seria mas robusto encapsular esos datos q guardas mediante getters y setters no?

LioNHearT

es ke en principio en este curso no "conocemos" classes, por eso lo hago asi..

voy a probar eso haber que tal

LioNHearT

vale, ahi tube un fallo tonto, pero creo que sigo teniendo el mismo problemas. os lo pongo tal y como lo tengo:

//estructura
struct info{
       string usuari,guanyador;
       int intents,numero;
       int h_inici,durada;
       };//informacio de les partides
       
struct maquina{ int num, morts, ferits; };//informacio numeros maquina struct partides{ typedef info tPartides[MAX_PARTIDES]; //taula tupla per guardar la informacio de //les partides
int nPartides, num_maquina; typedef maquina tMaquina[MAX_INTENTS]; //taula tupla "memoria" maquina }; //aqui tengo el problema p.tMaquina[p.nPartides].num=1000; cin>>p.tPartides[p.nPartides].usuari; cout<<p.tPartides[i].usuari<<"\t\t"; if(p.tPartides[i].intents>p.tPartides[i+1].intents)

todas esas lineas me dan siempre el mismo error " invalid use of `partides::tPartides' "

que hago mal? :S

y gracias de nuevo a todos por vuestra ayuda.

edit: #4 pero para que salga como tu, tengo que poner algun comando? porque lo copio y me sale como texto normal

IAF

Te refieres a usar la etiqueta [ code] [ /code] ?

LioNHearT

si. merci #8 jeje. y ahora haber si vemos el fallo que tengo, porque yo no caigo xD

m0rG

No sé si será por esto pero el código de la estructura partides es un poco raro.En las líneas:

typedef info tPartides[MAX_PARTIDES];
typedef maquina tMaquina[MAX_INTENTS];

estás definiendo un nuevo tipo que dudo que esté bien (de hecho no lo utilizas en el resto del código que has puesto).Creo que lo que quieres hacer es declarar 2 nuevos tipos con las estructuras info y maquina y en partides tener tablas con esos nuevos tipos.Si es eso creo que sería mejor hacer algo así:

typedef struct {
string usuari,guanyador;
int intents,numero;
int h_inici,durada;
} info;

typedef struct {
int num, morts, ferits;
} maquina;

O sin cambiar el código que tienes:

typedef struct maquina <nombre_tipo_maquina>;
typedef struct info <nombre_tipo_info>;

De esa forma en las variables de partide tendrías algo como:

tInfo tPartides[MAX_PARTIDES]; //Una tabla llamada tPartides de tamaño fijado por MAX_PARTIDES (constante supongo) de elementos de tipo tInfo (que es un typedef de la estructura info,el nombre es un ejemplo,me lo he inventado).

#5

Ciertamente en C++ suele ser recomendable usar clases por el tema de encapsulación de datos.De todas maneras las struct en C++ son clases cuyos atributos y métodos son public por defecto.Son útiles cuando quieres tener "empaquetamiento" de varias variables en un mismo sitio.Si no ha visto aun clases es la única forma decente de hacerlo :P (en C el problema que pide #1 se haría con structs).

LioNHearT

problema solucionado. era cosa de kitar typedef. thanksss

Usuarios habituales

  • LioNHearT
  • m0rG
  • IAF
  • Puni
  • r2d2rigo