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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Класс, зависящий от самого себя  (Прочитано 3585 раз)
Eugene Efremov
Гость
« : Апрель 17, 2008, 21:23 »

Код:
template<class tp, class val_tp = typename tp::val> class foo 
{
// ....
};

class bar : public foo<bar>  // error
{
public:
typedef int val;
// ....
};
Существует ли в принципе возможность разорвать порочный круг такого рода, или это концептуальный баг в языке?

P.S. Предупреждая ответ «ручками прописать аргументы по умолчанию» — еще пример, демонстрирующий, что это не всегда возможно:
Код:
template<class tp, void (tp::*)()> class foo 
{
//...
};

class bar : public foo<bar, &bar::baz> // error
{
public:
void baz();
//...
};
Записан
Tonal
Гость
« Ответ #1 : Апрель 18, 2008, 08:07 »

Существует ли в принципе возможность разорвать порочный круг такого рода, или это концептуальный баг в языке?
Может баг в голове? Улыбающийся

P.S. Предупреждая ответ «ручками прописать аргументы по умолчанию» — еще пример, демонстрирующий, что это не всегда возможно:
Ну и как должен будет в этом случае компилятор действовать? Улыбающийся

P.S. Обход найти обычно можно, только нужен более подробное описание задачи. :-)
« Последнее редактирование: Апрель 18, 2008, 08:10 от Tonal » Записан
Electronix
Гость
« Ответ #2 : Май 24, 2008, 22:32 »

По второму юзай boost::function - там все просто или обьект-функтор. Последнее хорошо описано в книге Вандервуда и Джосьютисса - шаблоны С++.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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