Russian Qt Forum
Ноябрь 24, 2024, 09:31 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Не наследуется шаблон  (Прочитано 2726 раз)
phpCoder
Гость
« : Апрель 08, 2015, 10:34 »

Добрый день.
Есть код:
Код
C++ (Qt)
template<typename K, typename V> class AbstractBaseDialog : public QDialog
{
public:
   typedef QHash<K, V> Result;
   explicit AbstractBaseDialog(QWidget *parent = 0);
   virtual ~AbstractBaseDialog() {}
   ...
};
 
class AbstractFormattingDialog : public AbstractBaseDialog<QString,QStringList>
{
   Q_OBJECT
public:
   typedef Result::ConstIterator Iterator;
   explicit AbstractFormattingDialog(QStringList &source, QWidget *parent = 0);
   virtual ~AbstractFormattingDialog() {}
   ...
protected:
   ...
   virtual void _loadData() = 0;
   ...
};

Пишет это:
Код:
error: 'AbstractBaseDialog' is not a template type
 template<class K, class V> class AbstractBaseDialog : public QDialog
                                  ^
error: expected template-name before '<' token
 class AbstractFormattingDialog : public AbstractBaseDialog<QString,QStringList>
                                                           ^
error: expected '{' before '<' token
error: expected unqualified-id before '<' token

Что ему не так?
Записан
sociopath
Гость
« Ответ #1 : Апрель 08, 2015, 10:47 »

Классы, наследуемые от QObject и имеющие макрос Q_OBJECT, не могут быть шаблонными. Одно из базовых ограничений Qt как, например, то, что нельзя наследоваться от двух QObject-derived классов.
Записан
phpCoder
Гость
« Ответ #2 : Апрель 08, 2015, 10:48 »

Кажется понял.
Когда делаешь
Код
C++ (Qt)
friend class AbstractBaseDialog;
то надо делать:
Код
C++ (Qt)
template<typename K, typename V>
friend class AbstractBaseDialog;

т.е. пихать во все дыры конструкцию template<...>

PS Значит к Qt не относится.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.176 секунд. Запросов: 20.