2010-03-20 3 views
2

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

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' 

ответ

6

QMap шаблонный класс, так что вам нужно указать тип внутреннего QMap так:

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

Примечание пространство между «>» S иначе лексер C++ считает его оператор >>.

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

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

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

+0

«Если вы хотели, чтобы попытаться сохранить любой вид QMap, как тип значения ... вы не можете »- это можно было бы понимать как означающее« никакая копия QMap не может использоваться как тип значения внешнего QMap ». Я уверен, что это не то, что вы имели в виду, но для избежания сомнений: в то время как «QMap » недопустимо, можно использовать * данный экземпляр * QMap в качестве типа значения, например. "QMap >". –

+0

... и, если внешний QMap определен в шаблоне, параметры этого шаблона могут использоваться для создания экземпляра QMap. Например, если внешний QMap является членом 'Foo ', тогда его полный тип может быть 'QMap >' –

+0

Да, мой плохой ... Я должен был сказать, что он нуждался в полных экземплярах (разрешимых?) в качестве параметров типа шаблона –