Как вызвать неспециализированную версию шаблонной функции QList :: operator < - PullRequest
1 голос
/ 20 марта 2012

Ситуация

У меня есть QList<QVariant>, где каждый QVariant элемент должен быть QList<QVariant> своего собственного.Чтобы заполнить список, я хочу использовать QList :: operator << </a>, который перегружен, чтобы принимать const T & value и более специализированный const QList<T> & other.

Проблема

Когда я запускаю следующий код:

QList<QVariant> rootList;
QList<QVariant> subList = QList<QVariant>() << 1 << 2 << 3;
rootList << subList;

Последняя строка здесь будет вызывать функцию operator<< ( const QList<T> & other ), насколько я знаю, потому что это более специализированная функциякоторый соответствует типу subList.Результирующий список будет выглядеть следующим образом:

rootList: [1, 2, 3]

Когда вместо этого я хочу, чтобы он выглядел следующим образом:

rootList: [[1, 2, 3]]

Как принудительно вызвать вызов неспециализированной версии QList::operator<<?

Обходной путь

Я понимаю, что есть функция QList :: push_back , которая не перегружена для QList<T>, и это делаетчто я ищуОднако я не хочу полагаться на функцию, которая была «предусмотрена только для совместимости с STL».

1 Ответ

3 голосов
/ 20 марта 2012

Вы можете явным образом привести QVariantList к QVariant:

rootList << (QVariant)subList;

или

rootList << QVariant(sublist);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...