1

この質問をするのはばかげているように思えますが、それは簡単なように思えますが、その方法がわからず、インターネット上のどこにも見つからないからです。QList を標準出力に返す関数を作成しようとしていますが、抽象クラスへのポインターが混乱しています。AbstractStudent クラスは、別のクラス Student のインスタンスを生成します。ここに関数があります:

QList<AbstractStudent*>* StudentList::returnList() const{


}
4

1 に答える 1

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 オブジェクトを生成すると予想していました。

于 2013-09-20T07:12:05.757 に答える