Vì một số lý do, khi tôi xác định một biến là "uint" thay vì "unsigned int" trong chương trình của tôi, lỗi đó. Điều này có vẻ lạ, bởi vì uint được nhập là:Sử dụng lỗi nhập liệu gây ra lỗi, trong khi "unsigned int" không ...?
typedef unsigned int uint;
... vì vậy tôi nghĩ rằng tôi có thể sử dụng hai thay thế cho nhau. Để chính xác hơn, tôi chỉ định kết quả của hàm trả về "unsigned int" thành biến uint, sau đó sử dụng uint đó trong cuộc gọi thay đổi kích thước vectơ ... tại thời điểm lỗi đó. Tức là, mã của tôi trông giống như sau:
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;
}
... và dòng nó sai là dòng myVect.resize.
Rõ ràng, tôi đã có một giải pháp, nhưng tôi muốn hiểu TẠI SAO điều này đang xảy ra, vì tôi khá bối rối. Ai có ý tưởng gì không?
PS - Trong trường hợp bất kỳ ai nghĩ rằng điều đó có thể quan trọng, tôi đang sử dụng gcc v4.1.2 trên fedora 15 ... và tệp bao gồm định nghĩa uint là /usr/include/sys/types.h.
Bất cứ khi nào bạn gặp lỗi, bạn luôn cần bao gồm lỗi được đề cập trong câu hỏi của mình. –
Bạn nên hiển thị mã thực không thành công. Cụ thể là '# include'-s, khai báo' sử dụng', v.v. Và GCC 4.6 có lẽ phù hợp tiêu chuẩn hơn 4.1. –
Và [như bạn có thể thấy ở đây] (http://ideone.com/Y1DRP), lỗi không xảy ra trong ví dụ bạn đã cung cấp (ít nhất là với phiên bản gcc đó). –