程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> error C2662: 不能將“this”指針從“const Node_align”轉換為“Node_align &a

error C2662: 不能將“this”指針從“const Node_align”轉換為“Node_align &a

編輯:C++入門知識

先貼代碼


[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版本,所以會有這種情況發生;很有可能是平台更嚴格了

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved