3

我想有一个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)
                ^
4

0 回答 0