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

先贴代码

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版本,所以会有这种情况发生;很有可能是平台更严格了




你可能感兴趣的:(error C2662: 不能将“this”指针从“const Node_align”转换为“Node_align &”解决方案)