0

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

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

1 回答 1

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 的容器是隐式共享的,因此复制它们很便宜。

于 2012-12-02T13:59:00.373 回答