我想有一个QList
或QVector
在一个类中,它有一个恒定数量的元素类型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)
^