当前位置:编程学习 > C/C++ >>

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++ ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,