这段代码中出现了一个错误,原因是st_answer_choose_multiple
结构体中的banswer
成员被定义为指向QList<QString>
的指针,在进行赋值操作时无法直接给指针分配新的内存空间。解决方法是将其定义为普通的QList<QString>
类型而非指针类型。
修改后的代码如下:
struct st_answer_choose_multiple {
QList<QString> banswer;
QList<QString> banswer_standard;
bool bret;
};
然后在 st_subjectToJson()
函数中修改对应部分代码:
case 2: { // Choose Multiple
QJsonObject chooseMultipleAnswerObj;
QJsonArray banswerArray, banswerStandardArray;
for (const QString& answer : subject.subject_Type.choose_multiple.banswer) {
banswerArray.append(answer);
}
for (const QString& answer : subject.subject_Type.choose_multiple.banswer_standard) {
banswerStandardArray.append(answer);
}
chooseMultipleAnswerObj["banswer"] = banswerArray;
chooseMultipleAnswerObj["banswer_standard"] = banswerStandardArray;
chooseMultipleAnswerObj["bret"] = subject.subject_Type.choose_multiple.bret;
json["subject_Type"] = chooseMultipleAnswerObj;
break;
}
这样就可以正确地处理多选题型的答案了。
内容由零声教学AI助手提供,问题来源于学员提问