中易网

MFC中CString赋值出错

答案:4  悬赏:20  
解决时间 2021-01-17 07:12
  • 提问者网友:山高云阔
  • 2021-01-16 15:40
MFC中CString赋值出错
最佳答案
  • 二级知识专家网友:时间的尘埃
  • 2021-01-16 15:46
不是不能赋值,这讲起来内容就多了,涉及到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
全部回答
  • 1楼网友:痴妹与他
  • 2021-01-16 18:07
CString s;
s = "something";
ABC *p = new ABC;
p->str=s;//出错Unhandled exception.....
追问:s="something";//没错误
p->str="something";//出错
p->str=s;//出错
有没有什么解决方法
  • 2楼网友:千夜
  • 2021-01-16 17:21
不是有CSTRINGLIST
  • 3楼网友:愁杀梦里人
  • 2021-01-16 16:34
CString *t = new(p)CString();
把这一行加到ABC *p=(ABC*)malloc(sizeof(ABC));之后
原因是你的CString str没有构造。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息