要素 type の定数を持つクラスにQList
orが必要です。次のようなものを簡単に使用できます。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)
^