中易网

MFC中CString赋值出错

答案:4  悬赏:20  
解决时间 2021-01-17 07:12
MFC中CString赋值出错
最佳答案
不是不能赋值,这讲起来内容就多了,涉及到C++底层的一些知识。
你现在这种用法是把struct ABC当做一种数据结构来用,当然针对struck结构
ABC *p=(ABC*)malloc(sizeof(ABC));
p->str=s;
这种用法是无可厚非的,毛病出在你在这个struck里定义了一个类对象CString,
在C++有关构造函数的知识里,一个类A里如果包含有B类的对象,那么在这个A类定义对象时,编译器会在A类的构造函数里调用B的构造函数。
好了,矛盾出来了,struct ABC你是当结构体用的,没有所谓的构造函数,那么结构体里的str就没被构造,所以就会出现很多问题,具体出在哪我也不知道,那得去看CString源码。
由此,有二种改法,一个是把malloc改成new,一个是把CString改成内置类型,比如说char
全部回答
CString s;
s = "something";
ABC *p = new ABC;
p->str=s;//出错Unhandled exception.....
追问:s="something";//没错误
p->str="something";//出错
p->str=s;//出错
有没有什么解决方法
不是有CSTRINGLIST
CString *t = new(p)CString();
把这一行加到ABC *p=(ABC*)malloc(sizeof(ABC));之后
原因是你的CString str没有构造。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
康熙时期的名臣有哪些
bat的随机数
负十三摄氏度和负七摄氏度差多少
京瓷kyocera打印机卡纸怎么处理?
有一种水果叫牛什么
画廊地址有知道的么?有点事想过去
中华玉祖艺术馆地址有知道的么?有点事想过去
鑫旺宾馆(和园西)地址好找么,我有些事要过去
域名A(已备案),B域名(未备案),C主机,D空间
谁有卖绝版玩具都是全新的(如假面骑士空我DX
新坐标家具商场地址好找么,我有些事要过去
T字头列车硬卧是什么样子的?
求x-4的绝对值加上x-5的绝对值的最小值。
大连何氏眼科
金达莱花的花语是什么?寓意又是什么?
推荐资讯
— Tony, are you listening to me?—Sorry,
腾讯城防三国,之前叫什么名字?
50多万一颗的天价荔枝女子偷摘一把开吃 咽的
剑三、景天和雪见看过去是哪一集
"圣上君南方,我长北方"中的"圣上"和"我"分别
逆战赌神成就必须是匹配模式才行吗
求一个做早餐汤粉汤面的汤料配方
齐齐哈尔都有什么湖?
为什么要这样填?
山东省威海市那个城市比较好
濮阳百姓量贩是不是卖个韩国企业了?现在连总
脑筋急转弯,猪哥报是什么意思
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?