• 10768阅读
  • 9回复

[提问]关于QList 作为返回值问题 [复制链接]

上一主题 下一主题
离线hu851217
 

只看楼主 倒序阅读 楼主  发表于: 2011-06-27
— 本帖被 XChinux 从 论坛公告栏 移动到本区(2011-06-27) —
各位大哥看看这个函数返回有错吗??

QList<int>CategoriesModel::getModelIndexByName(QString name)
{
          QList<int> index;
         for(int i=0; i < m_categoriesmodellist.count();i++)
         {
                  if(m_categoriesmodellist.at(i)->name() == name)
                  {
                           index.append(i);
                  }
         }
         return index;
}


离线hu851217

只看该作者 1楼 发表于: 2011-06-27
我运行时发现,这个函数有时会段错误!

int i = getModelIndexByName("Widget")[0];
离线XChinux

只看该作者 2楼 发表于: 2011-06-27
引用第1楼hu851217于2011-06-27 17:55发表的  :
我运行时发现,这个函数有时会段错误!
int i = getModelIndexByName("Widget")[0];

如果一个都没有找到,那[0]很明显是不可存在的非法访问。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线XChinux

只看该作者 3楼 发表于: 2011-06-27
楼主得修改标题,词不达意,否则会被删除的。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线hu851217

只看该作者 4楼 发表于: 2011-06-27
Program terminated with signal 6, Aborted.
#0  0xb78b4424 in __kernel_vsyscall ()
#0  0xb78b4424 in __kernel_vsyscall ()
No symbol table info available.
#1  0x42e71e12 in raise () from /lib/libc.so.6
No symbol table info available.
#2  0x42e73a48 in abort () from /lib/libc.so.6
No symbol table info available.
#3  0x080545ce in ?? ()
No symbol table info available.
#4  0x43b20044 in qt_message_output(QtMsgType, char const*) () from /usr/lib/libQtCore.so.4
No symbol table info available.
#5  0x43b20523 in ?? () from /usr/lib/libQtCore.so.4
No symbol table info available.
#6  0x43b2062a in qFatal(char const*, ...) () from /usr/lib/libQtCore.so.4
No symbol table info available.
#7  0x43b2066d in qt_assert_x(char const*, char const*, char const*, int) () from /usr/lib/libQtCore.so.4
No symbol table info available.
#8  0xb0309e01 in QList<int>::operator[] (this=0xbf8f7b38, i=0) at /usr/include/qt4/QtCore/qlist.h:464
No locals.
#9  0xb0323f5e in CategoriesModel (this=0x9577210, parent=0x0) at categoriesmodel.cpp:54
        roles = {{d = 0x9577300, e = 0x9577300}}
        Royal = {{p = {static shared_null = {ref = {_q_value = 9393}, alloc = 0, begin = 0, end = 0, sharable = 1, array = {0x0}}, d = 0x95781e0}, d = 0x95781e0}}
        Indie = {{p = {static shared_null = {ref = {_q_value = 9393}, alloc = 0, begin = 0, end = 0, sharable = 1, array = {0x0}}, d = 0x9578590}, d = 0x9578590}}
        Nodefault = {{p = {static shared_null = {ref = {_q_value = 9393}, alloc = 0, begin = 0, end = 0, sharable = 1, array = {0x0}}, d = 0x9578008}, d = 0x9578008}}
        Pastel = {{p = {static shared_null = {ref = {_q_value = 9393}, alloc = 0, begin = 0, end = 0, sharable = 1, array = {0x0}}, d = 0x95783b8}, d = 0x95783b8}}
        Spring = {{p = {static shared_null = {ref = {_q_value = 9393}, alloc = 0, begin = 0, end = 0, sharable = 1, array = {0x0}}, d = 0x9578768}, d = 0x9578768}}
#10 0xb032b74a in QDeclarativeElement (this=0x9577210) at /usr/include/qt4/QtDeclarative/qdeclarativeprivate.h:83
No locals.
#11 0xb032b799 in QDeclarativePrivate::createInto<CategoriesModel> (memory=0x9577210) at /usr/include/qt4/QtDeclarative/qdeclarativeprivate.h:91
No locals.
#12 0x45c9288c in ?? () from /usr/lib/libQtDeclarative.so.4
No symbol table info available.
#13 0x45c966a0 in ?? () from /usr/lib/libQtDeclarative.so.4
No symbol table info available.
#14 0x45c8a186 in ?? () from /usr/lib/libQtDeclarative.so.4
No symbol table info available.
#15 0x45c8a5f3 in ?? () from /usr/lib/libQtDeclarative.so.4
No symbol table info available.
#16 0x45c8a6f0 in QDeclarativeComponent::beginCreate(QDeclarativeContext*) () from /usr/lib/libQtDeclarative.so.4
No symbol table info available.
#17 0x45c88a44 in QDeclarativeComponent::create(QDeclarativeContext*) () from /usr/lib/libQtDeclarative.so.4
No symbol table info available.
#18 0x45b769ee in QDeclarativeView::continueExecute() () from /usr/lib/libQtDeclarative.so.4
No symbol table info available.
#19 0x45b77170 in ?? () from /usr/lib/libQtDeclarative.so.4
No symbol table info available.
#20 0x0806018c in ?? ()
No symbol table info available.
#21 0x08054128 in ?? ()
No symbol table info available.
#22 0x42e5bbb7 in __libc_start_main () from /lib/libc.so.6
No symbol table info available.
#23 0x08053eb1 in ?? ()
No symbol table info available.
离线hu851217

只看该作者 5楼 发表于: 2011-06-27
错误的提示信息,怎么改标题???
离线hu851217

只看该作者 6楼 发表于: 2011-06-27
段错误,很难重现! 不知那里搞错了,晕!
离线jdwx

只看该作者 7楼 发表于: 2011-06-27
同意版主意见,好歹要检查一下返回的Qlist里有没有数据啊。
if(QList.count() == 0)  return ;
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
离线hu851217

只看该作者 8楼 发表于: 2011-06-29
谢谢,编程要严谨阿!
离线hu851217

只看该作者 9楼 发表于: 2011-06-29
问题解决了,谢谢大家!QList 可以作为返回值,我的错误是其他地方导致的!
快速回复
限100 字节
 
上一个 下一个