• 8427阅读
  • 14回复

qstring 类怎么在函数间进行传递? [复制链接]

上一主题 下一主题
离线无境
 
只看楼主 倒序阅读 楼主  发表于: 2008-05-16
— 本帖被 XChinux 执行加亮操作(2008-05-17) —
  void TestA() {
QString a;
a="abcd"
TestB(a);

}

void TestB(QString a){
QString b;
b=a;
 
}
这样声明和调用,最终结果不对,这样的调用qstring 类似乎不支持
大牛们,qstring 是不是不能直接调用?
尝试用指针调用也似乎行不通,
qstring 类应该怎么传递啊???????????????????????????????
是不是通过char *来传啊
离线无境
只看该作者 1楼 发表于: 2008-05-16
又是一个跨模块传递内存治理类的问题。
不要尝试越过模块边界传递内存治理类(如string、CString等等),应该转换成char*之类的标准数据类型再传递,每个模块都有属于自己的逻辑堆内存,一个模块中分配的内存在另一个模块看来是不存在的(无效的),每个内存块都有模块标记,系统会比较分配和释放时的模块是否相同。另外一个隐患是,不同模块使用的内存分配器可能是不一样的,所以必须维持一个原则,模块分配的内存必须由自己释放。换句话说,所有内置内存治理的封装类都不要作为参数跨模块传递。
说的很有道理哦
离线无境
只看该作者 2楼 发表于: 2008-05-17
呵呵!想标准化一点,可惜是自讨苦吃!
qstring 类不能转换成char类的,这是一个比较正常的问题,关键的问题则在于qstring 类是不能用char类指针!
这个问题原来很好解决,采用qstring 的地址传递解决问题
离线lzian
只看该作者 3楼 发表于: 2008-05-17
引用楼主无境于2008-05-16 22:34发表的 qstring 类怎么在函数间进行传递? :
  void TestA() {
QString a;
a="abcd"
TestB(a);
.......


B参数要用指针或引用,看似你编程的功底不到家啊
离线XChinux

只看该作者 4楼 发表于: 2008-05-17
终于出来了,呼 呼,用引用。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线无境
只看该作者 5楼 发表于: 2008-05-17
对qt不熟悉啊.而且没有集成开发环境,没法断点测试,所以发现中间运行错误不容易
离线无境
只看该作者 6楼 发表于: 2008-05-17
一般的话都是尽量避免这样的调用,因为这样调用以后,分配的内存需要到其他地方进行释放,不然就比较容易造成内存泄露
离线lzian
只看该作者 7楼 发表于: 2008-05-17
引用需要需要分配地址空间么?
离线无境
只看该作者 8楼 发表于: 2008-05-17
引用本身不需要地址分配,但是你引用的空间,被你引用了,所以没有释放,所以在引用结束以后,要进行空间释放,所以在不同模块下对地址空间进行了处理,你不释放不会报错,如果该引用用的不是很多,也不明显,如果反复调用的话,就可以发现他在吃内存
离线lzian
只看该作者 9楼 发表于: 2008-05-18
敢问阁下对什么语言比较熟悉?
程序的变量在内存中是怎么分配的?堆?栈?
离线无境
只看该作者 10楼 发表于: 2008-05-18
楼上大侠严重了!
得罪之处还请海涵!
足下对什么语言都不熟悉,熟悉的话,也不会问如此幼稚的问题!
所谓菜鸟一思考,老鸟别发笑!
我想在引用的时候既有堆内存又有盏内存,对于堆内存一般自动释放,而对于盏内存都要手动去释放,
C和C++应该在这一点上是一致的吧?
我也是自己大概想象,
也不知道对不对?
大侠,能否留下QQ,好以后碰到问题来直接邻教!
我的thomasjack1981@sina.com.cn
    qq 57056219
离线无境
只看该作者 11楼 发表于: 2008-05-18
楼上大侠严重了!
得罪之处还请海涵!
足下对什么语言都不熟悉,熟悉的话,也不会问如此幼稚的问题!
所谓菜鸟一思考,老鸟别发笑!
我想在引用的时候既有堆内存又有盏内存,对于堆内存一般自动释放,而对于盏内存都要手动去释放,
C和C++应该在这一点上是一致的吧?
我也是自己大概想象,
也不知道对不对?
大侠,能否留下QQ,好以后碰到问题来直接邻教!
我的thomasjack1981@sina.com.cn
    qq 57056219
离线lzian
只看该作者 12楼 发表于: 2008-05-19
其实我也不太理解,也不喜欢理解,细节上的东西琢磨的太多了,会延误整体开发的进度。
内存管理,我相信Qt做的还可以。
这些东西,都是调试或改bug的时候才考虑
离线无境
只看该作者 13楼 发表于: 2008-05-27
很久没上来了,呵呵!
不考虑的问题不等于不会发生!
恰恰相反,在程序设计中事前担心的问题最后几乎都会导致一定的麻烦!
所以事前在实现的时候是尽可能的避免一些可能会出现的麻烦,这需要经验的积累以及人生的阅历!
目前各方面都不到位,所以在设计过程中往往最后都退而求其次,实现就OK,.出问题后再去查!
所以测试就需要很大的代价,而对于大公司来讲可以承受,对于咱个体户来讲,可能一个版本出现很多问题,可能就会给人带来很不好的印象,而且往往项目的时间非常紧,对于工头来讲,他才不管怎么实现呢,拿来卖钱最重要,商机最重要,最好今天说了,明天就给他!所以往往捞不到很好的测试!这样只有尽可能在代码段的时候尽可能的避免可能出现的麻烦!所以就会很保守!呵呵!
不知道大侠使用的QT 开发集成环境用的是哪一个?方便设置中断调试吗?linux下的,看了window下可以使用VS,linux下的kdevelop,能够设计qt2的程序吗?我目前的qt程序还是用gedit写的
离线yfx2003

只看该作者 14楼 发表于: 2008-05-27
linux下的kdevelop,能够设计qt2的程序吗


应该是可以的吧 ……

最新版本的kdevelop支持qt4了。
www.qtcn.org/gpq4/
ajaxref.okajax.com/
快速回复
限100 字节
 
上一个 下一个