Originariamente inviato da GreyFox86
Se hai definito i membri come const allora perchè il compilatore non ti indica che stai cercando di assegnare dei valori a delle costanti?

Vedo che fai un po' di confusione tra apici singoli e virgolette... gli apici servono per dichiarare una costante char (da assegnare ad una variabile char o per farne quello che ti pare) ed il valore che rappresenta è sempre e solo quello del carattere. Quando usi le virgolette stai indicando una stringa non un carattere, e quindi di conseguenza è sottinteso che alla fine verrà inserito un terminatore di stringa \0.
Quindi: il warning non puoi averlo ottenuto con quell'assegnazione ma piuttosto con qualcosa del tipo:
vElenco[i].campo1[x]='ab'
dove specifichi più caratteri quando dovresti indicarne solo uno, mentre l'errore di conversione da puntatore a char a char è evidentemente una causa delle virgolette: stai assegnando la stringa "a" (e non il carattere) ad un char, ma assegnare una stringa significa assegnare il puntatore al primo elemento. Da qui l'errore di conversione.
No, ho ben chiaro la differenza tra costante char e stringa, quindi apici e virgolette (vedere mio 1° post) e questo benedetto vElenco[i].campo1[x]='a'; è venuto da un precedente suggerimento mentre i membri sono delle costanti e quindi è ok che il warning è avvento con vElenco[i].campo1[x]='ab' (credo di aver riportato male durante le prove) ...

comunque quello che non mi è chiaro e che ancora non mi avete spiegato è che avendo dei membri costant char definiti in campo1, campo2 ... un assegnazione (precedentemente suggerita) in un for del tipo

for (int x=0; x<2; x++) { //se vuoi scrivere dal primo elemento devi partire da 0
vElenco[i].campo1[x]='a';
}

come fa ad assegnare valori ai vari membri se è indicato ... campo1[x]

e quindi nuovamente rispondo che non è possibile valorizzare i membri se non indicandone singolarmente ed espressamente il loro nome!