Per qualche motivo, quando definisco una variabile come "uint" anziché "unsigned int" nel mio programma, si sbaglia. Questo sembra strano, perché uint è typedef come:L'uso di un typ tipof uint causa un errore, mentre "unsigned int" non ...?
typedef unsigned int uint;
... quindi vorrei pensare che avrei potuto usare i due in modo intercambiabile. Per essere più precisi, sto assegnando il risultato di una funzione che restituisce "unsigned int" in una variabile uint, quindi usando quel uint in una chiamata di ridimensionamento vettoriale ... a quel punto si sbaglia. Vale a dire, il mio codice simile a questa:
unsigned int getUInt()
{
return 3;
}
int main(void) {
vector<vector<float> > vectVect(100000);
for(uint i = 0; i < vectVect.size(); ++i)
{
vector<float>& myVect = vectVect[i];
uint myUnsignedInt = getUInt();
myVect.resize(myUnsignedInt);
}
cout << "finished" << endl;
}
... e la linea E errori a è la linea myVect.resize.
Ovviamente, ho già una soluzione, ma mi piacerebbe capire perché questo sta accadendo, dato che sono piuttosto sconcertato. Qualcuno ha qualche idea?
PS - Nel caso in cui qualcuno pensi che possa essere importante, sto utilizzando gcc v4.1.2 su fedora 15 ... e il file include che definisce uint è /usr/include/sys/types.h.
Ogni volta che si verifica un errore, è sempre necessario includere l'errore in questione nella domanda. –
Dovresti mostrare il codice reale che sta fallendo. In particolare i '# include'-s, le dichiarazioni' using', ecc. E GCC 4.6 è probabilmente molto più conforme standard di 4.1. –
E [come puoi vedere qui] (http://ideone.com/Y1DRP), l'errore non si verifica nell'esempio che hai fornito (almeno con quella versione di gcc). –