• 6632阅读
  • 4回复

[提问]请问这个这是C++的语法问题吗? [复制链接]

上一主题 下一主题
离线纵刀少年
 

只看楼主 正序阅读 楼主  发表于: 2013-04-06
QDateTime MyClassA::timeTransfer(QString datetime)
{
    // "Tue May 31 17:46:55 +0800 2011"
    int year,month=1,day,hour,min,sec;
    year=datetime.section(" ",5,5).toInt();
    QString mon=datetime.section(" ",1,1);
    QStringList monthList;
    monthList<<"Jan"<<"Feb"<<"Mar"<<"Apr"<<"May"<<"Jun"<<"Jul"<<"Aug"<<"Sep"<<"Oct"<<"Nov"<<"Dec";
    month=monthList.indexOf(mon)+1;

    day=datetime.section(" ",2,2).toInt();
    QString time=datetime.section(" ",3,3);

    QStringList timelist=time.split(":");
    hour=timelist.at(0).toInt();
    min=timelist.at(1).toInt();
    sec=timelist.at(2).toInt();

    QDate date_=QDate(year,month,day);
    QTime time_=QTime(hour,min,sec);

    QDateTime datetime_=QDateTime(date_,time_);

    return datetime_;
}
我在一个类中定义了这样一个共有函数,其中都是使用了临时变量,而没有类的数据成员。
我在另一个类MyClass的一个槽函数slotFunc()中调用了这个MyClass类的这个时间转换函数:
假如MyClassA *my;
MyClassB::slotFunc()
{
my->timeTransfer("QSTRING1");
}
这样没有问题。然再往其中调用一次
MyClassB::slotFunc()
{
my->timeTransfer("QString1");
my->timeTransfer("QString2)";  //QString2是不同于QString1的另一个时间字符串
}
则提示索引范围出错了:
ASSERT failure in QList<T>::at: "index out of range", file ../../../../Desktop/Qt/4.7.4/mingw/include/QtCore/qlist.h, line 456
Invalid parameter passed to C runtime function.
Invalid parameter passed to C runtime function.
QWaitCondition: Destroyed while threads are still waiting

我接触得比较多的是C语言,C++现在是边学边用。
这个问题是由于C++的语法错误码?还是QT内部的机制导致?求解释一下~
离线纵刀少年

只看该作者 4楼 发表于: 2013-04-07
回 3楼(XChinux) 的帖子
找到问题了,原来是有些情况中函数的实参存在“NULL”值............. orz
离线XChinux

只看该作者 3楼 发表于: 2013-04-07
    QStringList timelist=time.split(":");
    hour=timelist.at(0).toInt();
    min=timelist.at(1).toInt();
    sec=timelist.at(2).toInt();


上面这段代码问题很大。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线纵刀少年

只看该作者 2楼 发表于: 2013-04-06
回 1楼(XChinux) 的帖子
问题的重点是:为什么调用一次没有问题,调用两次却出问题了。难道这个函数中的数据不是调用完后马上销毁的?
离线XChinux

只看该作者 1楼 发表于: 2013-04-06
就是越界了,仔细检查吧。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
快速回复
限100 字节
 
上一个 下一个