Possible Duplicate:
C++ STL set update is tedious: I can't change an element in placestd :: set iterator tự động const
Tôi đã trích xuất vấn đề và đổi tên và vì thế vì mục đích đơn giản.
Về cơ bản tôi nhanh chóng một lớp học và tôi trữ nó trong một std :: set, sau này tôi muốn có một tham chiếu đến lớp vì vậy mà tôi có thể kiểm tra giá trị của nó và thay đổi chúng ...
mã đơn giản:
MyClass tmpClass;
std::set<MyClass > setMyClass;
setMyClass.insert(tmpClass);
std::set<MyClass >::iterator iter;
iter=setMyClass.begin();
MyClass &tmpClass2=*iter;
và các lỗi:
error C2440: 'initializing' : cannot convert from 'const MyClass' to 'MyClass &'
(tôi đã gỡ bỏ các bộ phận của thông báo lỗi, "MVB :: Run ::" để xóa nó lên quá.)
nếu tôi thêm một 'const' trước vào dòng cuối cùng của mã thì mọi thứ hoạt động tốt nhưng sau đó tôi không thể thay đổi giá trị ...
Đây có phải là hành vi bình thường và tôi phải loại bỏ dữ liệu, thay đổi giá trị và đưa nó trở lại?
Tôi có cảm giác rằng việc này có liên quan đến việc sắp xếp tập hợp nhưng tôi sẽ không chạm vào các biến được sử dụng để sắp xếp.
Bạn có thể làm điều này, nhưng đó là thực hành không tốt. –