Val*_*ond 16 c++ const std set
可能重复:
C++ STL集更新很繁琐:我无法更改元素
我已经解决了问题并更改了名称,因此为了简单起见.
基本上我实例化一个类,并将其存储在std :: set中,稍后我想要引用该类,以便我可以检查它的值并修改它们......
简化代码:
MyClass tmpClass;
std::set<MyClass > setMyClass;
setMyClass.insert(tmpClass);
std::set<MyClass >::iterator iter;
iter=setMyClass.begin();
MyClass &tmpClass2=*iter;
Run Code Online (Sandbox Code Playgroud)
和错误:
error C2440: 'initializing' : cannot convert from 'const MyClass' to 'MyClass &'
Run Code Online (Sandbox Code Playgroud)
(我删除了部分错误消息"MVB :: Run ::"以清除它.)
如果我在最后一行代码中添加一个前面的"const",那么一切都运行良好但是我无法更改值...
这是正常行为,我必须删除数据,更改值并重新将其重新放回?
我觉得这与集合的排序有关,但我不会触及用于排序的变量.
use*_*604 19
我确定你won't touch the variables that are used for the sorting可以通过使用这样的const_cast来解决这个问题:
MyClass tmpClass;
std::set<MyClass > setMyClass;
setMyClass.insert(tmpClass);
std::set<MyClass >::iterator iter;
iter=setMyClass.begin();
const MyClass &tmpClass2=*iter;
MyClass &tmpClass3 = const_cast<MyClass&>(tmpClass2);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13110 次 |
| 最近记录: |