我对于提出这个问题感到愚蠢,因为它似乎很简单,但我不知道该怎么做,我无法在互联网上的任何地方找到它。我正在尝试创建一个将QList返回到标准输出的函数,指向抽象类的指针让我感到困惑。 AbstractStudent类生成另一个类Student的实例。这是功能:
QList<AbstractStudent*>* StudentList::returnList() const{
}
答案 0 :(得分:1)
存储抽象类指针的列表将能够存储指向该抽象类的任何子类的指针。
请考虑以下事项:
AbstractStudent.h:
class AbstractStudent
{
// ...
};
Student.h:
class Student : public AbstractStudent
{
// ...
};
任何其他类.cpp:
QList< AbstractStudent* > studentList;
// Each of the following works:
AbstractStudent* student1 = new Student( /* ... */ );
studentList.append( student1 );
Student* student2 = new Student( /* ... */ );
studentList.append( student2 );
Student* student3 = new Student( /* ... */ );
AbstractStudent* student3_1 = student3;
studentList.append( student3 );
但是我对你的最后一句话感到有点困惑,声称AbstractStudent生成了Student对象。我本以为Student会继承AbstractStudent,而其他一些类会生成Student对象,就像我的例子一样。