ZBLOG

struct st_answer_trueOrfalse { bool banswer; // 答案 bool banswer_standard; // 标准答案 bool bret; // 结果 }; //选择题 struct st_answer_choose { int banswer; // 答案 int banswer_standard; // 标准答案 ...

根据你提供的代码,目前没有明显的问题。不过,我注意到你在结构体 st_subject 中使用了一个联合体 st_subject_Type 来存储不同类型的题目答案。

联合体只能同时存储其成员中的一种类型,并且大小等于最大成员的大小。这意味着你无法同时使用 st_answer_trueOrfalsest_answer_choosest_answer_choose_multiple 三种类型的答案。

如果你想要表示不同类型的题目答案,可以考虑使用继承来实现多态性。例如,创建一个基类 AnswerBase,然后派生出具体的子类来表示不同类型的答案。

以下是一个示例:

// 答案基类
class AnswerBase {
public:
    virtual ~AnswerBase() {}
};

// 判断题答案
class TrueOrFalseAnswer : public AnswerBase {
public:
    bool banswer;
    bool banswer_standard;
    bool bret;
};

// 选择题答案
class ChooseAnswer : public AnswerBase {
public:
    int banswer;
    int banswer_standard;
    bool bret;
};

// 多选题答案
class ChooseMultipleAnswer : public AnswerBase {
public:
    QList<QString> banswer;
    QList<QString> banswer_standard;
    bool bret;
};

struct st_subject {
    int subject_number;          // 题目序号
    int subject_type;            // 题目类型
    QString subject_name;
    std::shared_ptr<AnswerBase> answer;  // 使用智能指针保存答案对象
    QImage image;
    int score;
};

使用上述方式,你可以根据题目类型选择不同的派生类来存储相应的答案。

希望这对你有所帮助!如果还有其他问题,请随时提问。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=18172

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?