СитуациюКак назвать Неспециализированную версию шаблонной функции QList :: оператор <<
У меня есть QList<QVariant>
где каждый QVariant
элемент должен быть QList<QVariant>
своими собственным. Чтобы заполнить список, я хочу использовать QList::operator<<, который перегружен, чтобы взять как 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».
Я не очень знаком с Qt, но у меня есть ощущение, что обычное функциональное обозначение будет более привычным и более Явный: 'rootList << QVariant (sublist);' –
@LucDanton, это ваш выбор. Я добавлю к сообщению как альтернативу – Lol4t0
Отлично, спасибо! Я предполагаю, что static_cast (subList) является предпочтительной формой. –
AerandiR