PDA

View Full Version : [C++] Leggere i membri di una struttura


Albitexm
04-05-2010, 21:45
Io ho una struttura (struct), che semplicemente memorizza degli elementi di un insieme. Userò un classico esempio per farmi capire:
Io ho una struttura che mi consente di memorizzare i nomi degli allievi di una classe: Struct Studente {string nome1,string nome2 ecc..}
con i membri: Studente alunno; alunno.nome1=""; alunno.nome2""; ecc..
La struttura può avere da 2 a 10 membri alunno (perchè ne ho dichiarate una decina di strutture simili, ognuna con una quantità di membri diversa).
Se io voglio leggere tutti i membri di questa struttura, e comparare essi con un valore restituito da una funzione, devo creare io una funzione specifica per questo? Ho esiste un metodo una funzione per leggere tutti i membri di una struttura?
In pratica io ho i mebri studente: pippo,pluto,gino voglio leggere tutti questi 3 membri dalla struttura e verificare che siano nomi diversi da un nome restituito da una mia funzione. Ma non
conosco quanti studenti compongono la struttura. In questo caso sono 3, ma potevano essere un numero da 2 a dieci.
Inoltre secondo voi usare l'oggetto di tipo struttura (struct), conviene solo con membri di tipo string o sono funzionali anche con semplici variabili di tipo char? In pratica se io invece di avere degli aggregati di nomi di studenti ho a che fare con cordinate alfanumeriche, mi conviene usare sempre le strutture?

tomminno
04-05-2010, 21:59
Forse dovresti studiare le liste.
E già che parli di C++ provare con vector<string> (o list<string>, ma vector è un pò più versatile)

fero86
05-05-2010, 00:45
se ho capito bene, anziché dichiarare N struct diverse potresti fare cosi:

template<unsigned int _cMembers>
struct CClass {
static const unsigned int m_cMembers = _cMembers;
string m_aMembers[_cMembers];
};


per quanto riguarda la domanda finale: in C++ la sola ed unica differenza tra struct e classi é la visibilitá di default dei membri (pubblica nel caso delle struct e privata nel caso delle classi), per il resto sono la stessa cosa.