error C2662: 不能将“this”指针从“const Node_align”转换为“Node_align &”解决方案

来源:互联网 发布:软件 地图 编辑:程序博客网 时间:2024/06/07 09:41

先贴代码

void Insert2NodeAlign(int n1,int n2,int n3,int id){Node_align DFStmp=Node_align(n1,false,n2,n3,id);DFSNL_i=DFS_Nlist.find(Node_align(DFStmp));if (DFSNL_i!=DFS_Nlist.end()){DFSNL_i->insert2ElementBelong(n2);}else{DFS_Nlist.insert(DFStmp);}}


此处会出现错误:1>surfaceFlat.cpp(21): error C2662: “Node_align::insert2ElementBelong”: 不能将“this”指针从“const Node_align”转换为“Node_align &”
1>          转换丢失限定符


解决方法:

Node_align &n = const_cast<Node_align&>(*DFSNL_i);n.insert2ElementBelong(id);

之前在VC6下做好像不会出现这个问题,刚刚看STL里面的源代码,好像set的基类(那个红黑树)中的operator*和operator->都变成const函数,没找到非const版本,所以会有这种情况发生;很有可能是平台更严格了




原创粉丝点击