вложенный QMap в qt

Я пытаюсь использовать этот код в своем приложении QT.

QMap<QString,QMap>

но есть проблема сборки он говорит

C:/****/****/****/***/domparser.h:14: error: type/value mismatch at argument 2 in template parameter list for 'template<class Key, class T> class QMap'

person goutham    schedule 20.03.2010    source источник


Ответы (1)


QMap — это класс-шаблон, поэтому вам нужно указать тип внутреннего QMap следующим образом:

QMap<String, QMap<QString, int> > myMap;

Обратите внимание на пробел между '>, иначе лексер C++ считает, что это оператор >>.

[отредактировано]

Если вы намеревались сохранить общий QMap в качестве типа значения, а не конкретный экземпляр QMap, во внешней карте, вы не можете этого сделать!

У вас не может быть чего-то вроде QMap, потому что сам QMap не является типом, это шаблон - он называет тип только тогда, когда указаны параметры шаблона.

person rep_movsd    schedule 20.03.2010
comment
Если вы намеревались попытаться сохранить любой тип QMap в качестве типа значения ... вы не можете - это можно было бы прочитать как означающее, что никакая реализация QMap не может использоваться в качестве типа значения внешнего QMap. Я уверен, что вы имели в виду не это, но во избежание сомнений: хотя QMap‹QString,QMap› недействителен, можно использовать данный экземпляр QMap в качестве типа значения, например QMap‹QString, QMap‹int,int› ›. - person Gareth Stockwell; 22.03.2010
comment
... и, если внешний QMap определен в шаблоне, параметры этого шаблона могут использоваться для создания экземпляра внутреннего (значения) QMap. Например, если внешний QMap является членом Foo<X,Y>, то его полный тип может быть QMap<QString, QMap<typename X, typename Y> > - person Gareth Stockwell; 22.03.2010
comment
Да, мой плохой... Я должен был сказать, что ему нужны полные инстанцируемые (разрешимые?) типы в качестве параметров типа шаблона. - person rep_movsd; 22.03.2010