Использование шаблона CRTP реализует наследуемого посетителяC++

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

Сообщение Anonymous »

Я пытаюсь реализовать наследуемый метод посетителя для класса, используя CRTP вместо виртуальной функции. Сначала у нас есть такой код:
#include
#include
struct A {
virtual ~A() = default;
};
struct B : A {};
struct C : A {};

template
struct Base {
void dispatch(A *a) {
if (dynamic_cast(a)) {
return static_cast(this)->func(dynamic_cast(a));
}
if (dynamic_cast(a)) {
return static_cast(this)->func(dynamic_cast(a));
}
return static_cast(this)->func(a);
}
void func(A*) { std::cout

Подробнее здесь: https://stackoverflow.com/questions/798 ... le-visitor

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