error C2662: 不能将“this”指针从“const Node_align”转换为“Node_align &”解决方案
先贴代码
[cpp]
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())
{
<SPAN style="COLOR: #ff0000">DFSNL_i->insert2ElementBelong(n2);</SPAN>
}
else
{
DFS_Nlist.insert(DFStmp);
}
}
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> 转换丢失限定符
解决方法:
[cpp]
Node_align &n = const_cast<Node_align&>(*DFSNL_i);
n.insert2ElementBelong(id);
Node_align &n = const_cast<Node_align&>(*DFSNL_i);
n.insert2ElementBelong(id);
之前在VC6下做好像不会出现这个问题,刚刚看STL里面的源代码,好像set的基类(那个红黑树)中的operator*和operator->都变成const函数,没找到非const版本,所以会有这种情况发生;很有可能是平台更严格了
补充:软件开发 , C++ ,