QPointer到QHash

时间:2012-12-02 11:10:12

标签: qt pointers qhash qpointer

是否可以将QPointer与QHash一起使用?

QPointer<QHash<QString, QPointer<QStringList>> >  pHash;

1 个答案:

答案 0 :(得分:3)

QPointer只能与QObject子类一起使用。因此它不能与QHash或QStringList一起使用,因为它们都不是QObject。如果上面的代码为你编译,那可能是因为你还没有使用pHash呢?甚至初始化这样的QPointer,例如

QPointer<QHash<QString, QString> > foo( new QHash<QString, QString>() );

给出如下一个错误(gcc):

error: cannot convert ‘QHash<QString, QString>*’ to ‘QObject*’ in initialization

如果您确实需要(智能)指向容器的指针,请尝试QSharedPointer,这不要求包含的对象具有任何特定类型。 通常一个人在堆栈上创建容器,但在堆上创建容器几乎在所有情况下都是单一的并且是不必要的。 Qt的容器是implicitly shared,因此复制它们很便宜。