基类代码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版本,所以会有这类情况产生;很有多是平台更严格了

    

    

文章结束给大家分享下程序员的一些笑话语录: 人工智能今天的发展水平:8乘8的国际象棋盘其实是一个体现思维与创意的强大媒介。象棋里蕴含了天文数字般的变化。卡斯帕罗夫指出,国际象棋的合法棋步共有1040。在棋局里每算度八步棋,里面蕴含的变化就已经超过银河系里的繁星总数。而地球上很少有任何数量达到这个级别。在金融危机之前,全世界的财富总和大约是1014人民币,而地球人口只有1010。棋盘上,所有可能的棋局总数达到10120,这超过了宇宙里所有原子的总数!经典语录网

原文地址:https://www.cnblogs.com/jiangu66/p/3085941.html