Класс, полученный из виртуального чистого, автоматическое создание переопределения из шаблонаC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Класс, полученный из виртуального чистого, автоматическое создание переопределения из шаблона

Сообщение Anonymous »

Я использую шаблон «Субъект/Наблюдатель» таким образом, что у меня есть класс, наблюдающий за событиями двух типов:
class manager : public observer, observer

Чтобы быть действительным, класс manager должен реализовать Update функцию для каждого типа событий, но что я могу сделать, если эти функции можно написать по шаблону?
Итак, вместо:
class manager : public observer, observer {
void Update(const eventA& ) { /* do something */ }
void Update(const eventB& ) { /* do something */ }
}

При использовании такого шаблона могут возникнуть ошибки:
template void Update(const T&) { /* do something */}

Я реализовал кое-что на основе:
  • функции шаблона с именем update_internal
  • и макрос для создания различных «реальных» реализаций для всех типов.
Это работает (аналогично псевдокоду ниже ), но я ищу более элегантное решение! Есть идеи?
class manager : public observer, observer {
template void Update_Internal(const T&) { /* do something */}

#define GEN(TYPE) void Update(TYPE a) { Update_Internal(a); }

GEN(eventA);
GEN(eventB);
}


Подробнее здесь: https://stackoverflow.com/questions/790 ... a-template
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»