有可能有一个抽象类的QScopedPointer的QList吗?

时间:2016-05-11 06:03:36

标签: c++ qt abstract-class qscopedpointer

我希望在类中有一个QListQVector,它具有一定数量的元素类型QScopedPointer< 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)
                ^

0 个答案:

没有答案