是否可以将QPointer与QHash一起使用?
QPointer<QHash<QString, QPointer<QStringList>> > pHash;
答案 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,因此复制它们很便宜。