Класс, полученный из виртуального чистого, автоматическое создание переопределения из шаблона ⇐ 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

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