3

要素 type の定数を持つクラスにQListorが必要です。次のようなものを簡単に使用できます。QVectorQScopedPointer< SomeAbstractClass >

QList<QScopedPointer<SomeClass> listClass;
listClass.append(QScopedPointer<SomeClass>(new SomeClass()));

しかし ではQScopedPointer、コピー コンストラクターが無効になっており、抽象クラスをインスタンス化できません。

もちろん簡単に使えますQSharedPointerが、どうしても使いたくないのでどうしたらいいでしょうか?

編集:これが私のサンプルコードで、このエラーが発生しました:

class someAbsClass{
    public:
        someAbsClass(){}
        virtual void fcn()=0;
    };

    class someClass : public someAbsClass{
    public:
        someClass(){}
        void fcn(){
            std::cout << "fcn" << std::endl;
        }
    };


    int main(){
        QVector<QScopedPointer<someAbsClass> > VectorPtrAbss(1);
        VectorPtrAbss[0].reset(new someClass());
    }

error: 'QScopedPointer<T, Cleanup>::QScopedPointer(const QScopedPointer<T, Cleanup>&) [with T = someAbsClass; Cleanup = QScopedPointerDeleter<someAbsClass>]' is private
 Q_DISABLE_COPY(QScopedPointer)
                ^
4

0 に答える 0