У меня есть несколько классов, которые являются производными от QWidget
Также у меня есть шаблон функции, как этоВставить имя класса в контейнер
template<typename T>
QWidget* create(){return static_cast<QWidget*>(new T());}
теперь я хочу, чтобы создать контейнер:
QMap<int, className> classes // it is not compiling
так, что Я могу использовать значения контейнера в качестве типа шаблона функции:
QWidget* widget = create<classes[i]>();
Как мне это сделать?
Я попытался скомпилировать ваш ответ. Компилятор дает мне ошибку: ** нет совпадений, которые преобразуют функцию «create», чтобы ввести «класс QWidget * (*)()» в creators [1] = & create; ** –
lnk
@lnk: код, показанный выше, компилируется и отлично работает , Одна из проблем, с которыми я столкнулась, - это то, что имя 'create' проблематично, когда внутри виджета, потому что это имя уже определено Qt. Использование префикса '::' решило эту проблему. – 6502