• 3902阅读
  • 4回复

[讨论]C++菜鸟关于QString 引用的疑惑 [复制链接]

上一主题 下一主题
离线vinge
 

只看楼主 倒序阅读 楼主  发表于: 2015-01-05
关键词: QString求助
我定义了一个窗体里有个函数要传入一个QString
void myform::setMsg(QString &text)
{
    LineEdit1->setText(text);
}
可是我用form1->setMsg(input);时,执行到Label1->SetText(text);就出段错误了。
input是一个全局的QString变量。
以前没怎么学过用过C++,对引用实在不是太理解。
我这么写定义setMsg函数有什么错,为什么能通过编译却执行错误?
LineEdit1的setText虽然传入的是引用,但我猜想应该还是要拷贝一份的吧?
其实我想传进去的是一个普通的char 字符串,怎么定义这个函数最合适?
一切真如都是假如
离线圣域天子

只看该作者 1楼 发表于: 2015-01-05
据不完全猜想,可能form1没有初始化。
离线roywillow

只看该作者 2楼 发表于: 2015-01-05
传入的是引用并且还不是const引用,人家干嘛要再拷贝一份……
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线dbzhang800

只看该作者 3楼 发表于: 2015-01-06
这儿你的引用 这么写不太好,但是还不至于造成段错误。你需要检查的是你这儿用到的指针。
离线vinge

只看该作者 4楼 发表于: 2015-01-06
三楼正解,原来是我myform构造函数里就搞出野指针了。
不知咋的就影响了LineEdit的setText ,晕死。
一切真如都是假如
快速回复
限100 字节
 
上一个 下一个