0

由于多个实例化,我想保留一个静态位置来写入。我希望能够从每个实例中添加到列表中。但只保留第一个。
不知道该怎么办?

适用于 char 类型的指针。但是当我尝试将 QStringList 转换为指针时,我一直收到一个错误:Segmentation Fault。

*。H


QStringList msgList;

*.cpp


fncInit(){
    static QStringList MessageList;
    msgList = MessageList;//keep the location constant for all new instantiations
}

fncBuild(QString strMessage){
    MessageList.append(strMessage); //if I use a pointer QStringList through out, I get Segmentation Fault.
}

fncPrintf(){
    for(int i; i < msgList.count(); i++){
        printf("%d)    %s", i, msgList.at(i).toStdString().c_str());
    } 
}
4

2 回答 2

0

您应该msgList在标题中声明您的静态。不要忘记添加QStringList CLASS_NAME::msgList;您的 .cpp 文件。

并且在您的fncInit分配中为空QStringListmsgList但无论如何正确的方法都在上面。

于 2013-06-27T19:04:11.567 回答
0

在您的头文件中,您需要以下代码:

static QStringList msgList;

这将使该静态变量可用于包括该头文件在内的所有函数。

当您在msgList函数中声明静态时,您正在创建它的本地实例。

于 2013-06-27T19:23:31.080 回答