class student { public: student(); ~student(); QString getName() const; void setName(const QString &value); QString getId() const; void setId(const QString &value); // 通过名称获取事务信息 template <typename T> T getCourse(const QString& name){ auto it = m_workMap.find(name); if(it == m_workMap.end()){ qDebug() << "name is not exist"; return nullptr; } if(T ret = dynamic_cast<T>(it.value())){ return ret; } return nullptr; } template <typename T> QVector<T> getStudentWork(){ QVector<T> rets; for(auto work : m_workMap){ if(T ret = dynamic_cast<T>(work)){ rets.push_back(ret); } } return rets; } public: QString m_name; QString m_ID; int m_pos; // key 为事务的名称 QMap<QString, studentWork*> m_workMap; };
时间: 2023-07-15 11:11:55 浏览: 105
QT中QString类中文详解
这是一个定义了一个名为 "student" 的类,其中包含了一些成员变量和成员函数。其中,
- 成员变量:
- m_name:学生的姓名,QString 类型;
- m_ID:学生的学号,QString 类型;
- m_pos:学生的位置,int 类型;
- m_workMap:一个 QMap 对象,用于存储学生的事务信息,其 key 为事务的名称,value 为 studentWork 类型的指针。
- 成员函数:
- 构造函数:用于初始化对象;
- 析构函数:用于销毁对象;
- getName():获取学生的姓名;
- setName():设置学生的姓名;
- getId():获取学生的学号;
- setId():设置学生的学号;
- getCourse():通过名称获取事务信息的模板方法,其中 T 为模板参数类型,可以为任意类型,返回值为 T 类型的指针;
- getStudentWork():获取学生所有事务信息的模板方法,其中 T 为模板参数类型,可以为任意类型,返回值为 QVector\<T\> 类型的对象。
需要注意的是,该代码中存在一个问题,即 getCourse() 和 getStudentWork() 方法中的 dynamic_cast 操作可能会失败,导致返回值为 nullptr。因此,在实际使用中需要进行一定的检查和处理。
阅读全文