Использование шаблона 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
Ответить

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

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

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

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

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